首页 > 代码库 > Linux进程管理

Linux进程管理

在Linux中有哪些比较重要或常见的进程?
如何查看进程列表及使用资源情况?
如何杀死进程?

进程管理类命令:
pstree , ps , top , vmstat ,htop ,pmap

ps命令Process Status (report a snapshot of the current processes)
将某个时间点的进程运行情况选取下来
选项:
    a:所有跟终端相关的进程
    x:所有跟终端无关的进程
    u:以用户为中心显示进程相关信息
    e:显示所有进程
    f:完整格式列表
    F:显示额外信息
    H:显示进程层次关系
    o:自定义字段显示
常用选项:
    ps -l:查阅自己的bash程序
        输出:
            F:进程标志(process flags)说明这个进程的权限
                4:表示此进程的权限为root
                1:表示此子进程仅可进行复制,而无法实际执行
            S:进程的状态
                R:运行中
                S:睡眠,但可以被唤醒
                D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况
                T:停止状态
                Z:(zombie)僵死状态
            UID/PID/PPID:用户ID/进程ID/父进程的进程ID
            C:CPU使用率
            PRI/NI:priority/nice的缩写,表示优先级
            ADDR/SZ/WCHAN:内存相关
            ADDR是kernel function表示进程在内存的那个部分
            SZ表示进程消耗的内存
            WCHAN表示进程是否在运行
            TTY:相关的终端,没有用"?"表示
            CMD:command缩写,造成此程序被触发的命令
    ps aux:查看所有运行程序
        输出:
            USER:用户账号
            %CPU:CPU使用率
            %MEM:占用实际内存比例
            VSZ:虚拟内存大小 virtual memory size
            RSS:非交互物理内存
            STAT:
                S:sleeping可中断
                D:不可中断睡眠
                R:运行或可运行
                T:终止
                Z:僵死
                s:session leader
                l:多线程进程
                +:前台进程
                N:低优先级进程
                <:高优先级进程
            START:改进程目前的状态,与ps -l中的S标识相同
            TIME:改进程时间使用CPU运行的时间
            COMMAND:改进程的实际命令

top命令 display Linux tasks
选项:

    -d:后面跟秒数,就是整个进程解密更新的秒数,默认5秒
    -b:以批次的方式执行top
    -n:与-b搭配使用,表示执行几次top
    -p:指定某个PID来监测
快捷键:
    ?:显示在top当前可以输入的按键命令
    P:以CPU的使用资源排序显示
    M:以内存的使用资源排序
    N:以PID排序
    T:按该进程使用CPU时间累积排序
    k:给某个PID一个信号
    r:给某个PID设定nice值
    q:退出
输出:
    PID:进程ID
    USER:用户名
    PR:priority 优先级,越小级别越大
    NI:nice值,与priority有关,也是越小越早被执行
    %CPU:CPU使用率
    TIME+:CPU使用时间的累加
注意:
    top默认排序按%CPU
   

htop命令
需要额外安装


pstree命令(display a tree of processes)
选项:
    -A:各进程树之间的连接以ASCII字符来连接
    -U:各进程树之间的连接以utf8字符来连接
    -p:列出每个进程的PID
    -u:列出每个进程的属主

   
进程间的通信:IPC
信号:signal
1    SIGUP    让进程不用终止,而重读其配置文件
2    SIGINT    中断正在运行的进程,相当于ctrl+c
9    SIGKILL    杀死进程
15    SIGTERM    正常终止进程
17    SIGSTOP    相当于ctrl+z暂停一个进程
查看帮助:man 7 signal

向其他进程传递信号,使用kill
kill -signal pid
kill可以将信号传递给某个job(%jobnumber)或者某个PID

Linux作业控制
jobs命令查看作业信息
ctrl+z:将作业从前台送往后台,同时进程会停止执行
bg jobid 进程将在后台运行
fg %jobid 调回前台
kill %jobid 杀死作业

Linux进程管理