首页 > 代码库 > 进程管理

进程管理

进程管理

  ps

    将某个时间点的进程运行情况选取下来

    ps aux

    ps -lA

    ps axjf

       A       等于-e,将所有的进程都列出来

      a       不与terminal有关的进程

      u       有效用户相关的进程

       x       与a一起使用,列出较完整信息

       l        小写l,较长、较详细的列出信息

       j        类似进程树的格式

    

      ps -l

         技术分享

        进程标识

          4--权限为root

          1--此进程仅可复制fork,不可执行exec

        进程状态

          R--Running,运行中

          S--Sleep,睡眠状态

          D--不可被唤醒的睡眠状态,通常可能在等待I/O

          T--Stop,停滞状态,可能在后台暂停或除错状态

          Z--Zombie,僵尸进程,进程已终止,无法被删除

        Kernel function        

                进程在内存中的位置,running为"-"

        登录者的终端机

          pts/n表示动态终端接口,由网络连接进主机的进程

          tty1~6表示本季上面的登录程序

          ?表示与终端机无关

      ps aux

         技术分享

 

      监控java线程数

        ps -eLf | grep java | wc -l

  pstree

                   可以很直观的反映出进程之间的相关性

                   pstree [-A|U] [-up]

                            A       进程树以ASCII字符连接

                            U      进程树以utf8码的字符连接,某些终端下可能会错误

                            u       列出每个进程的账号名称

                            p       列出每个进程的PID

                   例

                            pstree -A

                             技术分享

                            pstree -Ap

                             技术分享

 

         top

                   显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

                   top [ 参数 ]

        -b      批次处理

        -c     显示完整的治命令

        -I     忽略失效过程

        -s     保密模式

        -S     累积模式

        -d <时间>      设置间隔时间

        -u <用户名>     指定用户名

        -p <进程号>     指定进程

        -n <次数>       循环显示的次数

                   top中按键

        按键         作用

        1       监控每个逻辑CPU的使用状况

        y       加粗运行态进程

        b       加亮当前加粗列

        x       加粗当前排序列

      shift+</shift+>          向左/向右改变排序列

        S       切换到累计模式

        s       改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s

        l        关闭/显示平均负载和启动时间信息

        m      关闭/显示内存信息

        t        关闭/显示进程和CPU状态信息

        c       关闭/显示命令名称和完整命令行

        i        忽略闲置和僵死进程。这是一个开关式命令。

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

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

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

        f或者F    从当前显示中添加或者删除项目

        o或者O  改变显示项目的顺序

                   例

         技术分享

        分析

          系统负载/逻辑CPU数>5                说明超负荷运转

          steal time

            %st(Steal time):是当hypervisor服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。

            高steal值       可能意味着主机供应商在服务器上过量地出售虚拟机

            低steal值       意味着你的虚拟机不会经常地为了CPU时间与其它虚拟机激烈竞争.

      PRIORITY与NICE值

        PRI

          动态优先级

          调整

            用户无法直接调整,可以通过调整NICE值达到间接调整的目的

            PRI(new)=PRI(old)+ NICE

          与优先级关系

                                       越低越优先

        NICE

                             静态优先级,范围:-20~19

                             调整

            root可以调整所有人的进程-20~19,一般用户,仅可调整自己的0~19

            新进程赋予NICE值

              nice [-n 数字] command

            更改已存在进程NICE值

                                              renice [数字] PID

          与优先级关系

            越低越优先

         fuser

                   通过文件(或文件系统)找出正在使用该文件的程序

                   fuser [-umv] [-k [i] [-signal]] file/dir

                            u       列出进程所有者

                            m      后接文件名会主动上提到该文件系统的所顶层,对umount不成功很有效

                            v       列出每个文件与程序还有命令的完整相关性

                            k       找出使用该文件/目录的PID,并试图以sigkill这个信号给予该PID

                            i        必须与-k配合,会先询问

                            signal        例如 -1 -15等,若不加默认-9

                   例

                            找出目前所在目录的使用PID/所属账号/权限

                                     fuser -uv .

                            找到所有使用/proc文件夹下任意文件的进程

                                     fuser -muv /proc

                            找到访问某一文件的所有进程

                                     fuser -uv /var/gdm/.gdmfifo

                            找到访问某一文件的所有进程,并结束

                                     fuser -uv -ki /var/gdm/.gdmfifo

      fuser中access选项的意义

        c  此进程在当前目录下(非子目录)

        e  可被触发为执行状态

        f  是一个被打开的文件

        r  代表顶层目录

        F  该文件被打开了,不过在等待回应中

        m  可能为分享的动态函数库

         lsof

                   找到被进程所打开的文件名

                   lsof [-aUu] [+d]

                            a       多项数据需要同时成立

                            U      仅列出Unix like系统的socket文件类型

                            u       后跟username,列出该用户相关进程所打开的文件

                            +d     后跟目录,列出目录下面已经被打开的文件

                   例

                            列出目前系统上所有被打开的文件与设备

                                     lsof

                            列出root的所有进程打开的socket文件

                                     lsof -u root -a -U

                            列出系统上面所有被启动的周边设备

                                     lsof +d /dev

                            列出属于root的bash这个进程所打开的文件

                                     lsof -u root | grep bash

         pidof

                   找到某个正在执行的进程的PID

                   pidof [-sx] program_name

                            s       仅列出一个PID

                            x       同时列出该program可能的PPID的那个进程的PID

进程管理