zoukankan      html  css  js  c++  java
  • Linux 进程和工作管理

    进程和线程

    进程(process):进程是程序在一个数据集合上的一次执行过程,在早期的 UNIX、Linux 2.4 及更早的版本中,它是系统进行资源分配和调度的独立基本单位。

    线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。因为线程中几乎不包含系统资源,所以执行更快、更有效率。

    一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

    进程的分类

    • 用户进程:通过执行用户程序、应用程序或称之为内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。

    • 系统进程:通过执行系统内核程序而产生的进程,比如可以执行内存资源分配和进程切换等相对底层的工作;而且该进程的运行不受用户的干预,即使是 root 用户也不能干预系统进程的运行。


    • 交互进程:由一个 shell 终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。

    • 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。

    • 守护进程:守护进程是一直运行的一种进程,在 Linux 系统启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。例如 httpd 进程,一直处于运行状态,等待用户的访问。还有经常用的 cron(在 centOS 系列为 crond)进程,这个进程为 crontab 的守护进程,可以周期性的执行用户设定的某些任务。

    查看cpu个数和核心数

    #查看物理CPU的个数
    #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
    
    #每个cpu的核心数
    cat /proc/cpuinfo |grep "physical id"|grep "0"|wc -l
    

    进程管理

    top

    top 实时的查看进程的状态,以及系统的一些信息(如 CPU、内存信息等)

    内容 	                       解释
    top 	                       表示当前程序的名称
    11:05:18 	               表示当前的系统的时间
    up 8 days,17:12                表示该机器已经启动了多长时间
    1 user 	                       表示当前系统中只有一个用户
    load average: 0.29,0.20,0.25   分别对应 1、5、15 分钟内 cpu 的平均负载
    
    ###
    Tasks: 26 total 	       进程总数
    1 running 	       1 个正在运行的进程数
    25 sleeping 	       25 个睡眠的进程数
    0 stopped 	       没有停止的进程数
    0 zombie 	       没有僵尸进程数
    
    

    进程详情

    列名 	解释
    PID 	进程 id
    USER 	该进程的所属用户
    PR 	该进程执行的优先级 priority 值
    NI 	该进程的 nice 值
    VIRT 	该进程任务所使用的虚拟内存的总数
    RES 	该进程所使用的物理内存数,也称之为驻留内存数
    SHR 	该进程共享内存的大小
    S 	该进程进程的状态: S=sleep R=running Z=zombie
    %CPU 	该进程 CPU 的利用率
    %MEM 	该进程内存的利用率
    TIME+ 	该进程活跃的总时间
    COMMAND 该进程运行的名字
    

    ps

    ps 静态查看当前的进程信息

    # 列出所有进程
    ps aux
    
    # 使用 -l 参数可以罗列出来这次登录的 bash 相关的进程信息
    ps -l
    

    pstree

    pstree 查看当前活跃进程的树形结构

    工作管理

    终止前台进程

    ctrl+c

    后台进程

    ctrl+z 使工作停止并丢到后台

    & 使工作在后台继续运行

    查看后台的工作

    jobs
    

    通过命令将后台的工作拿到前台来

    #后面不加参数提取预设工作,加参数提取指定工作的编号
    #ubuntu 在 zsh 中需要 %,在 bash 中不需要 %
    fg [%jobnumber]
    

    后台停滞的工作继续运行

    #与fg类似,加参则指定,不加参则取预设
    bg [%jobnumber]
    

    删除进程

    kill -[signal] %jobnumber
    kill -[signal] pid
    
    [signal]
    信号值 	作用
    -1 	重新读取参数运行,类似与 restart
    -2 	如同 ctrl+c 的操作退出
    -9 	强制终止该任务
    -15 	正常的方式终止该任务
    
  • 相关阅读:
    POJ 1269 Intersecting Lines(判断两条线段关系)
    POJ 3304 Segments(判断直线和线段相交)
    poj 1383 Labyrinth【迷宫bfs+树的直径】
    poj 2631 Roads in the North【树的直径裸题】
    poj 1985 Cow Marathon【树的直径裸题】
    hdoj 1596 find the safest road【最短路变形,求最大安全系数】
    hdoj 1260 Tickets【dp】
    poj 1564 Sum It Up【dfs+去重】
    2014 牡丹江现场赛 i题 (zoj 3827 Information Entropy)
    hdoj 2473 Junk-Mail Filter【并查集节点的删除】
  • 原文地址:https://www.cnblogs.com/linzhenyu/p/13175989.html
Copyright © 2011-2022 走看看