首页 > 代码库 > 进程管理学习笔记

进程管理学习笔记


  1. 一、状态

    1.正在运行或在运行队列中等待[就绪队列]) ,用状态码R表示

    2. 中断状态(休眠中, 受阻, 在等待某个条件的形成或接受到信号) ,用状态码S表示

    3. 不可中断状态(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)  ,用状态码D表示

    4. 僵死状态(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) ,用状态码Z表示 

    5. 停止状态(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ,用状态码T表示

    PS工具标识进程的5种状态码:

        D 不可中断 uninterruptible sleep (usually IO)

        R 运行 runnable (on run queue)

        S 中断 sleeping

        T 停止 traced or stopped

        Z 僵死 a defunct (”zombie”) process


        <:高优先级进程

        N:低优先级进程

        +:前台进程组中的进程

        l:多线程进程

        s:会话进程

二、进程间通信(IPC:Inter Process Communication)

        共享内存

        信号:Signal

            kill -l 显示所有可用的信号

            1:SIGHUP: 让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效

            2: SIGINT:Ctrl+c: 中断一个前台进程

            9: SIGKILL:杀死一个进程(直接强行关闭进程)

            15: SIGTERM:终止一个进程, 默认信号(释放所有的资源)

        Semaphore:通过打旗语与其他进程通信

        ...

    指定杀死一个信号(默认15信号):

        以top为例

        信号号码:kill 13310
        信号名称:kill -SIGKILL
        信号名称简写:kill -KILL
        kill PID
        killall COMMAND(需要杀掉多个进程时):killall httpd


二、指令

 ps:

        -e 显示所有进程。

        -f 全格式。

        -h 不显示标题。

        -l 长格式。

        -w 宽输出。

        -F 显示更多的字段

        -o 显示指定字段(ps -o pid,comm,ni)

        a 显示终端上的所有进程,包括其他用户的进程。

        r 只显示正在运行的进程。

        x 显示没有控制终端的进程。

    常用指令实例:

        -elf 

        -ef 

        -eF 

    数据标签:

        USER      //用户名 

        UID    //用户ID、但输出的是用户名

        PID    //进程的ID

        PPID    //父进程ID

        C      //进程占用CPU的百分比

        STIME  //进程启动到现在的时间

        TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程

        CMD    //命令的名称和参数

        %CPU      //进程占用的CPU百分比

        %MEM      //占用内存的百分比

        VSZ      //该进程使用的虚拟內存量(KB)

        RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 

        STAT      //进程的状态 

        START    //该进程被触发启动时间 

        TIME      //该进程实际使用CPU运行的时间

        PRI    //优先级   

        NI    //nice值

        PSR    //进程运行所处的CPU

pstree:显示当前系统上的进程树

pgrep:获取进程ID

[root@oracle 2]# pgrep -u root bash
9339

pidof:根据进程名称查找其相关进程的ID号

[root@oracle 2]# pidof bash
9339 767

top:

    M: 根据驻留内存大小进行排序

    P:根据CPU使用百分比进行排序

    T: 根据累计时间进行排序


    l: 是否显示平均负载和启动时间

    t: 是否显示进程和CPU状态相关信息

    m: 是否显示内存相关信息

    c: 是否显示完整的命令行信息

    q: 退出top

    k: 终止某个进程


    -d: 指定延迟时长,单位是秒

    -b: 以批处理模式,以翻屏模式进行

    -n #:在批模式下,共显示多少屏

free:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。

vmstat:系统状态查看命令

[root@oracle 2]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 3055292    976 528100    0    0     7     1   28   49  0  0 100  0  0


四、调整nice值

    调整已经启动的进程的nice值:renice NI PID

    在启动时指定nice值:nice -n NI COMMAND

五、前台和后台

前台作业:占据了命令提示符
后台作业:启动之后,释放命令提示符,后续的操作在后台完成

前台-->后台:
Ctrl+z: 把正在前台的作业送往后台,加送一个停止信号,作业在后台停止运行
COMMAND &:让命令在后台执行

bg: 让后台的停止作业继续运行
bg [[%]JOBID]

jobs: 查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业

fg: 将后台的作业调回前台
fg [[%]JOBID]


kill %JOBID:终止某作业

进程管理学习笔记