zoukankan      html  css  js  c++  java
  • 进程管理

    进程管理

    背景知识

      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

  • 相关阅读:
    20175326 《Java程序设计》第七周学习总结
    20175326 《Java程序设计》第六周学习总结
    2018-2019-20175326实验一《Java开发环境的熟悉》实验报告
    20175326 《Java程序设计》第五周学习总结
    20175326 《Java程序设计》第四周学习总结
    20175326 《Java程序设计》第三周学习总结
    # 20175326 《Java程序设计》第二周学习总结
    20175326 《Java程序设计》第一周学习总结
    20175325 《JAVA程序设计》实验四《Android程序设计》实验报告
    《JAVA程序设计》第十一周学习总结
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7096777.html
Copyright © 2011-2022 走看看