进程管理

进程管理

背景知识

  http://www.cnblogs.com/vamei/archive/2012/09/20/2694466.html

linux命令

  ps

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

    ps aux

    ps -lA

    ps axjf

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

      a       不与terminal有关的进程

      u       有效用户相关的进程

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

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

       j        类似进程树的格式

    记一次线上Java程序导致服务器CPU占用率过高的问题排除过程

      https://www.jianshu.com/p/3667157d63bb

    

      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      批次处理 - (加此参数可以解决bash中执行“top &”命令时,该后台进程暂停stop,无法输出日志问题 - 本人使用python脚本抓取cpu实时占用率时,就碰到此问题,排除了python的后台执行、子shell等问题,最终定位到此)

        -c     显示完整的治命令

        -I     忽略失效过程

        -s     保密模式

        -S     累积模式

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

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

        -p <进程号>     指定进程

        -H    线程模式,如果不加该选项,进程显示的为线程所占资源总和

        -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

          与优先级关系

            越低越优先

      linux top命令VIRT,RES,SHR,DATA的含义

        http://blog.51cto.com/zhoufayong/1548704

         fuser

                   http://www.cnblogs.com/pengdonglin137/p/4581091.html

         lsof

                   http://www.cnblogs.com/samhugh/p/3613044.html

         pidof

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

                   pidof [-sx] program_name

                            s       仅列出一个PID

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

参考资料

记一次线上Java程序导致服务器CPU占用率过高的问题排除过程

  https://www.jianshu.com/p/3667157d63bb

ps 和 top cpu 占用区别

  https://blog.csdn.net/beginning1126/article/details/8057527

原文地址:https://www.cnblogs.com/yc913344706/p/7096777.html