Linux进程管理工具详解

  •  进程管理工具

        查看进程

         pstree  显示进程树

               -p:显示PID

         ps 查看进程

           ps [options]...

             支持三种选项

                Unix选项:-a -e -f

                BSD选项:a u x

                GNU选项:--sort

         默认显示当前终端的进程

            BSD选项

               a:显示所有终端的进程

               u:显示进程所有者

               x:不链接终端的进程

               k|--sort 属性:对属性排序,属性前加-表示倒序

               f:选项显示进程树,相当于--forest

               o 属性...:选项显示定制的信息pid,cmd,%cpu,%me                     

                     常用属性

                          ni:nice值

                          pri:priority 优先级

                          psr:prcessor CPU编号

                          rtpro:实时优先级

                   ps axo pid,cmd,psr,ni,pri,rtprio

               L:显示支持的属性列表

                   euser:有效用户

                   ruser:真实用户

            Unix选项

               -e | -A:显示所有进程

               -f:显示完整格式程序信息

               -F:显示更完整格式的进程信息

               -C cmdlist:指定命令,多个命令用逗号分隔

               -L:显示线程

               -H:以层级格式显示进程相关信息

              -u userlist:指定有效用户ID或名称

              -U userlist:指定真正的用户ID或名称

              -g gid或groupname 指定有效的Pid或组名称

              -G gid或groupname 指定真正的Gid或组名称

              -p pid:显示指定Pid进程

              --ppid pid:显示属于Pid的子进程

              -M | Z:显示SELinux信息

         常用组合

              ps aux,ps -ef,ps -eFH

              ps -eo pid,tid,class,rtprio,ni,pri,pcpu,stat,comm

              ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

          通过PID来显示所属的进程:

              ps -fp pid1,pid2,...

          以父进程ID来显示其下所有的进程

             ps -f --ppid # 

          使用PID来查找进程名称

              ps -p pid -o comm=

          检查一个进程的执行时间

             ps -eo comm,etime,user | grep processname

          按tty显示所属进程

             ps -ft tty

          查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用

             ps -C httpd,sshd -o pid=        

        搜索进程

         ps 选项 | grep

         pgrep  搜索进程

             pgrep [options] pattern  与pkill共用一个man帮助

                      -u uid:effective user,生效用户

                      -U uid:real user,真正发起运行命令者

                      -l:显示进程名

                      -a:完整格式显示进程名

                      -P pid:显示指定进程的子进程

         pidof  按程序名查找pid

             pidof command

  • 系统监控工具

          uptime 

              image.png

              显示系统时间  系统启动到现在所经过的时间   上线用户数   平均负载

          free  查看内存信息

              image.png

                free [options]

                    -b 以字节为单位

                    -m 以MB为单位

                    -g 以GB为单位

                    -h 易读格式

                    -o 不显示-/+buffers/cache行

                    -t 显示RAM + swap的总和

                    -s n 刷新间隔为n秒

                    -c n 刷新n次后即退出 

          pmap  显示进程对应的内存映射

                  -x:显示详细格式信息

              cat /proc/PID/maps  查看内存具体使用情况

          top

            image.png

            第一行:当前系统时间  系统启动到现在所经过的时间  当前上线用户数  系统在1,5,15分钟的平均负载

               相当于uptime命令;交互按键:l  

             注意:平均负载值越小,系统越空闲;如果高于1,当前系统负载过高

           image.png

            第二行:显示的是目前进程总量与个别程序在什么状态(running,sleeping,stopped,zombie)

             注意:最后的zombie数值,如果不是0就需要查看一下是哪个进程处于僵死态

           image.png

           image.png

           第三行: 显示的是CPU整体负载,如果是多核心,可使用数字1键来切换显示方式

                   us:user space 用户运行程序占用CPU的百分比

                   sy:system用于运行内核占用CPU的百分比

                   ni:nice用户进程空间所改变过优先级的进程占用CPU的百分比

                   id:idle空闲CPU百分比

                   wa:wait to 等待I/O花费时间

                   hi:hardware interrupt 硬键中断占用CPU百分比

                   si:software interrupt 软键中断占用CPU百分比

                   st:stolen,被虚拟机“偷走”的百分比

           image.png

            第四行:物理内存使用情况       第五行:交换分区情况   按m键可切换显示方式

           image.png

           下面部分每一行的含义:

                 PID:每个进程的PID

                 USER:进程所属的使用者

                 PR:Priority,进程优先级,越小越优先

                 NI:Nice优先级,越小越早被运行

                 VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存大小

                 RES:进程当前使用的内存大小,不包括swap

                 SHR:进程与其它进程共享的内存大小,可通过RES-SHR来计算进程所占用的物理内存大小

                 S:进程状态

                %CPU:CPU使用率

                %MEM:内存使用率

                TIME+:CPU使用时间的累加

            命令用法:

                交互按键

                    l:是否显示首部信息

                   t:task及cpu信息

                   1数字:CPU显示方式

                  m:内存显示方式

                  P:以占据CPU百分比排序

                  M:以占据Memory空间大小排序

                  T:CPU累积占用时间排序

                  s:修改延迟时长

                 k:终止指定进程

                 W:保存

                 q:退出命令

               选项

                  -d #:指定刷新间隔

                  -n #:指定刷新次数

                  -b:全部显示

          htop

             top的增强版本;可使用选项、交互按键、也可鼠标点击

             image.png

          命令用法:

            交互按键

                  s:显示光标所在进程执行的系统调用

                  l:显示光标所在处进程所打开的文件列表

                 a:绑定进程到指定CPU

                 t:显示进程树

                 #:快速定位光标至PID为#的进程上

            选项 

                -d #:指定刷新时长

                -u USERNAME:显示指定用户的进程

                -s COLUMN:根据指定字段进行排序    

          iotop  监视磁盘I/O使用情况

            image.png

              第一行:Read和Write速率总计

              第二行:实际的Read和Write速率

              第三行:

                    线程ID(进程ID)  优先级  用户  磁盘读速率  磁盘写速率  swap交换百分比  IO等待所占百分比  线程/进程命令 

         命令用法:

           交互按键

              left和right方向键:改变排序

              r:反向排序

              o:只显示正在产生I/O的进程或线程

              p:TID与PID切换

              a:显示累积的I/O,而不是带宽

     i:改变线程优先级

              q:退出

            选项

               -o|--only:只显示正在产生I/O的进程或线程

               -b|--batch:非交互模式;一般用来记录日志

               -n N|--iter=N:设置监测次数,默认无限

               -d #|--delay=#:设置监测间隔,默认1秒,可接受1.1

               -u User|--user=USER:指定监测某个用户产生的I/O

               -P|--processes:仅显示进程,默认显示线程

               -a|--accumulated:显示累积的I/O,而不是带宽

               -k|--kilobytes:使用kB单位,脚本编程有用

               -t|--time:加时间戳,非交互模式

               -q|--quiet:禁止头几行,非交互模式

                    -q:只在第一次监测时显示列名

                   -qq:永远不显示列名

                   -qqq:永远不显示I/O汇总

         glances   远程监控工具(监视CPU,负载,内存,磁盘I/O,网络流量,文件系统,系统温度等信息)

           image.png 

           上面部分显示的是:CPU,Load系统负载,Mem内存使用,swap交换分区的使用情况

           中间部分显示的是:Network网络接口,Tasks任务进程的使用情况      

           左侧部分显示有磁盘I/O,分区使用情况等

                glances可以为Unix和Linux性能专家提供监视和分析性能数据功能,包括:

                     CPU使用率、内存使用情况、内核统计信息和运行队列信息

                     磁盘I/O速度、传输和读/写比率,文件系统中的可用空间,磁盘适配器

                     网络I/O速度、传输和读/写比率,页面空间和页面速度,消耗资源最多的进程,计算机信息和系统资源

          命令用法

                glances 支持远程模式,基于C/S模式工作

                  服务器模式

                      glances  -s  -B  IPADDR   指明监听本机哪个地址

                  客户端模式

                      glances  -c  IPADDR    要连接的服务器地址

              交互命令                 

                   a:Sort processes automatically        

                   l :Show/hide logs

                   c :Sort processes by CPU%              

                   b :Bytes or bits for network I/O

                   m :Sort processes by MEM%              

                   w: Delete warning logs

                   p :Sort processes by name              

                   x: Delete warning and critical logs

                   i :Sort processes by I/O rate          

                   1 :Global CPU or per-CPU stats

                   d :Show/hide disk I/O stats            

                   h :Show/hide this help screen

                   f :Show/hide file system stats         

                   t :View network I/O as combination

                   n :Show/hide network stats             

                   u :View cumulative network I/O

                   s :Show/hide sensors stats             

                   q :Quit (Esc and Ctrl-C also work)

                   y :Show/hide hddtemp stats

              选项

                 -b:以Byte为单位显示网卡数据速率

                 -d:关闭磁盘I/O模块

                 -f /path/to/somefile:设定输入文件位置

                 -o {HTML|CSV}:输出格式

                 -m:禁用mount模块

                 -n:禁用网络模块

                 -t #:延迟时间间隔

                 -1数字:每个CPU相关数据单独显示

         vmstat  可动态显示系统资源使用情况

             image.png

            显示内容

              procs 进程相关

                   r:等待运行的进程个数;(队列长度)

                  b:处理不可中断睡眠状态的进程个数(即IO阻塞队列长度)

              memory 内存相关

                 swpd:交换内存使用量

                 free:空闲物理内存量

                 buff:用于buffer的内存总量

                 cache:用于cache的内存总量

              swap 交换分区相关

                 si:数据进入swap中的速率(kb/s)

                 so:数据离开swap的速率(kb/s)

              io

                bi:从块设备读入数据到系统的速率

                bo:保存数据至块设备的速率

              system 系统相关

                in:interrupts 中断速率,每秒被中断的次数

                cs:context switch 进程切换的速率

              cpu CPU相关

                us:user space 用户运行程序占用CPU百分比

                sy:system(kernel space)用于运行内核占用CPU的百分比

                id:idle空闲CPU百分比

                wa:wait io等待I/O花费时间

                st:stolen,被虚拟机偷走的百分比

             命令用法

                 vmstat [options] [delay [count]]

                          -s:显示内存统计数据

                          -S  k, K, m or M 指定单位

                          x y:每隔x秒刷新y次                

         iostat 统计CPU和IO等信息

        image.png

           也可动态监测

         dstat  系统资源统计  代替vmstat,iostat

        image.png

        显示内容

             total-cpu-usage:cpu使用率

             dsk/total:磁盘读写总数

             net/total:网络设备发送和接收数据总数

                paging: 系统的分页活动,分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下都希望看到page in和page out的值为0 0

               system:中断和上下文切换,这项统计只在比较基线时才有意义

        命令用法

            选项

               dstat [-afv] [options..] [delay [count]]

                         -c:显示cpu信息;-C #,#,...,total

                         -d:显示disk相关信息;-D total,sda,sdb,...

                         -m:显示memory相关统计数据

                          -g:显示page相关统计数据

                          -n:显示network相关统计数据

                          -p:显示process相关统计数据

                          -r:显示io请求相关统计数据

                          -s:显示swapped相关统计数据

                         --top-cup:显示最占用cpu的进程

                         --top-io:显示最占用io的进程

                         --top-mem:显示最占用内存的进程

                         --top-latency:显示延迟最大的进程

                         --tcp   --udp   --unix   --rwa   --socket   --ipc

        saidar 查看CPU、进程、负载、内存、交换分区、网络、磁盘、文件系统等系统信息

         image.png

           这个命令是在博客中看到的,总结到这里供大家参考

        管理进程

           kill 向进程发送控制信号,以实现对进程管理;每个信号对应一个数字,信号名称以SIG(大小写不敏感)

           显示当前系统可用信号:kill -l | trap -l   

              常用信号:man 7 SIGNAL

              1)SIGHUP 不重启进程而让其重读配置文件

              2)SIGINT  中止正在运行的进程;相当于ctrl+c

              3)SIGQUIT 退出正在运行的进程;相当于ctrl+\

              9)SIGKILL   强制中止(杀死)运行的进程

            15)SIGTERM  正常中止运行的进程

            18)SIGCONT   继续运行

            19)SIGSTOP   后台休眠

            指定信号的方法 

               1、信号的数字标识:1,2,9

               2、信号的完整名称:SIGHUP

               3、信号的简写:HUP,INT

          kill 按PID发送信号

            kill [-SIGNAL] pid ...

               kill -n SIGNAL pid...

               kill -s SIGNAL pid...

          killall  按名称发信号

              killall [-SIGNAL] comm...

          pkill  按模式发送信号

              pkill [options] pattern

                     -SIGNAL

                     -u uid:effective user,生效者

                     -U uid:real user,真正发起运行命令者

                     -t terminal:与指定终端相关的进程

                     -P pid:显示指定进程的子进程

     注意:Linux系统各进程相关信息均保存在/proc/PID目录下的各文件中

猜你喜欢

转载自blog.51cto.com/10461810/2113080