Linux中进程管理的重要性不言而喻,那么废话不多说。

    pstree:显示进程树(没什么好说的)

    ps:显示当前时刻进程的信息(非动态)

       其选项有三种风格:

        UNIX风格:带“-”

        BSDUNIX风格:不带“-”

        GNU长选项:带“--”

       常用选项:

        基于BSD风格:

        a:显示与终端相关的进程

        x:显示与终端无关的进程

        u:以用户为中心显示进程信息

        常用组合:ps aux

[root@bogon ~]# ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

0            1  0.0  0.7  44488  7132 ?        Ss   17:35   0:02 /usr/lib/systemd/systemd --switched-root --s

0            2  0.0  0.0      0     0 ?        S    17:35   0:00 [kthreadd]

0            3  0.0  0.0      0     0 ?        S    17:35   0:00 [ksoftirqd/0]

0            5  0.0  0.0      0     0 ?        S<   17:35   0:00 [kworker/0:0H]

0            7  0.0  0.0      0     0 ?        S    17:35   0:00 [migration/0]

0            8  0.0  0.0      0     0 ?        S    17:35   0:00 [rcu_bh]

0            9  0.0  0.0      0     0 ?        S    17:35   0:00 [rcuob/0]

0           10  0.0  0.0      0     0 ?        S    17:35   0:00 [rcuob/1]

0           11  0.0  0.0      0     0 ?        S    17:35   0:00 [rcuob/2]

      信息说明:

        USER:用户

        PID:进程pid号

        %CPU:cpu使用累计使用百分比

        %MEM:内存累计使用百分比

        VSZ:虚拟内存集

        RSS:长驻内存集

        TTY:进程运行在哪个终端上

        STAT:进程运行状态

            S:可中断睡眠(可随时唤醒)

            D:不可中断睡眠(不可随时唤醒)

            R:正在运行中

            T:停止运行

            Z;僵死状态

            s:会话控制

            N:优先级较低的进程

            <:优先级较高的进程

            +:前端进程

            l:多线程进程

        START:进程运行开始时间

        TIME:进程累计占用cpu时间

        COMMAND:此进程的命令

     axo 自定义进程选项:显示自定义选项的列表,有pid(进程pid号), ni(nice值), pri(优先级), psr, pcpu, stat(状态), comm(命令), tty(终端), ppid(父进程号), rtprio(实时优先级)

     基于UNIX风格的选项:

        -e:显示所有进程(相当于ps ax)

        -f:显示进程详细信息

        常用组合:ps -ef

[root@bogon ~]# ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

0            1     0  0 17:35 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deseriali

0            2     0  0 17:35 ?        00:00:00 [kthreadd]

0            3     2  0 17:35 ?        00:00:00 [ksoftirqd/0]

0            5     2  0 17:35 ?        00:00:00 [kworker/0:0H]

0            7     2  0 17:35 ?        00:00:00 [migration/0]

0            8     2  0 17:35 ?        00:00:00 [rcu_bh]

0            9     2  0 17:35 ?        00:00:00 [rcuob/0]

0           10     2  0 17:35 ?        00:00:00 [rcuob/1]

0           11     2  0 17:35 ?        00:00:00 [rcuob/2]

....

     信息说明:大多与前面一样,只说明C是代表cpu累计使用比

        -F:显示更加详细的进程信息

        -H:以层级结构显示进程的相关信息

        常用组合:ps -eFH

[root@bogon ~]# ps -eFH

UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD

0            2     0  0     0     0   0 17:35 ?        00:00:00 [kthreadd]

0            3     2  0     0     0   0 17:35 ?        00:00:00   [ksoftirqd/0]

0            5     2  0     0     0   0 17:35 ?        00:00:00   [kworker/0:0H]

0            7     2  0     0     0   0 17:35 ?        00:00:00   [migration/0]

0            8     2  0     0     0   0 17:35 ?        00:00:00   [rcu_bh]

0            9     2  0     0     0   0 17:35 ?        00:00:00   [rcuob/0]

0           10     2  0     0     0   0 17:35 ?        00:00:00   [rcuob/1]

      信息说明:PSR:此进程运行在哪个cpu上,另外说一下带[]的表示内核线程

        -eo 自定义进程选项

    pgrep:显示匹配模式的进程(看grep就知道,加上p就是进程)

       常用选项:

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

         -U:显示真正由指定用户启动的进程

         -t:显示指定终端的进程

         -l:显示进程名

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

         -p:显示其父进程pid为指定pid的子进程

[root@bogon ~]# pgrep ssh -a 
1360 /usr/sbin/sshd -D
1489 sshd:     [root@bogon ~]#

     pkill:与pgrep用法一样,只是这是杀死匹配到的进程。

     pidof:根据指定的进程名取其pid号

[root@bogon ~]# pidof sshd
1489 1360
[root@bogon ~]#

     top:以动态的形式显示进程信息(默认刷新为3s)

top - 22:57:17 up  5:21,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 222 total,   2 running, 220 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1009304 total,   727184 free,   135800 used,   146320 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   725188 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
   73 0         20   0       0      0      0 S   0.3  0.0   0:02.19 rcu_sched                               
   74 0         20   0       0      0      0 S   0.3  0.0   0:01.13 rcuos/0                                 
   75 0         20   0       0      0      0 S   0.3  0.0   0:02.42 rcuos/1                           ....

       信息说明:

        第一行:top启动的时间;系统运行的时间;多少用户登录;1,5,15分钟的cpu等待队列长度

        第二行:作业信息:总进程数量;进程的运行状态信息

        第三行:cpu使用百分比:

            us:用户空间使用比

            sy:系统空间使用比

            ni:切换nice值运行进程使用比

            id:空闲时间比

            wa:等待占用比

            hi:硬中断占用比

            si:软中断占用比

            st:虚拟软件偷走比

        第四行:物理内存信息(单位为KB),分别为:总物理内存大小,空闲物理内存大小,已使用物理内存大小,缓冲/缓存物理内存大小

        第五行:交换内存信息(单位为KB),分别为:总的交换内存大小,空闲交换内存大小,已使用交换内存大小,总的可用内存大小(可用内存加上缓冲/缓存内存)

        第六行:

            PR:进程优先级

            SHR:共享内存集

        常用使用方法:

            P:以cpu累计使用比倒叙排列(从大到小)

            M:以内存累计占用时间倒叙排列

            T:以占用cpu累计时间倒叙排列

            l:开启关闭第一行

            t:开启关闭第二三行

            m:开启关闭第四五两行

            1:显示每颗cpu的状态信息

            s:修改刷新时间

        常用选项:

            -d #:以指定的刷新时间启动

            -b:以批次方式显示

            -n #:以多批次方式显示

    uptime:显示top的第一行信息

[root@bogon ~]# uptime
 23:18:42 up  5:42,  2 users,  load average: 0.00, 0.02, 0.05
[root@bogon ~]#

    htop:比top更炫酷更强大的的动态显示进程信息的命令

wKiom1b0BoTBX27ZAACzOS2ndyE583.png

         常用选项:
         -d #:指定延迟时间间隔;
         -u UserName:仅显示指定用户的进程;
         -s COLUME:以指定字段进行排序;
         常用子命令:
         l:显示选定的进程打开的文件列表;
         s:跟踪选定的进程的系统调用;
         t:以层级关系显示各进程状态;
         a:将选定的进程绑定至某指定的CPU核心;

         当然还有别的有趣的玩法,可以F1查看帮助,F2设置自己喜欢的界面。

    vmstat:显示虚拟内存状态

[root@bogon ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 721168    948 151192    0    0     3     0   16   20  0  0 100  0  0
[root@bogon ~]#

      信息说明:

        procs:r代表等待运行的进程个数,b代表阻塞进程的个数

        memory:swap表示交换空间使用总量,free表示空闲的物理内存总量,buff表示用于缓冲的内存大小,cache代表用于缓存的内存大小。

        swap:si代表数据进入swap的速度,so代表数据离开swap的速度

        io:bi代表从块设备读取数据到系统的速度,bo代表写入快设备的速度

        system:in代表中断毒素,cs代表上下文切换速度

        cpu:请参考top信息说明

    glances:一直基于curres的交互平台的监视工具

wKiom1b1RMLToit9AACB1OWp8XU472.png

  基本信息也差不多

    常用选项:
    -b:以Byte为单位显示网上数据速率;
    -d:关闭磁盘I/O模块;
    -m:关闭mount模块;
    -n:关闭network模块;
    -t #:刷新时间间隔;
    -1:每个cpu的相关数据单独显示;
    -o {HTML|CSV}:输出格式;
    -f  /PATH/TO/SOMEDIR:设定输出文件的位置;
   
    C/S模式下运行glances命令(下面这方法可以用浏览器打开实现实时监控):
     服务模式:
     glances  -s  -B  本机的某地址
     
    客户端模式:
     glances  -c  远程服务器的地址
  dstat命令:强大到没朋友的工具,谁用谁知道

wKiom1b1RhyDapPhAAA-olp7x6c769.png   
     
      常用选项:
    -c, --cpu:显示cpu相关信息;         

    -C #,#,...,total
    -d, --disk:显示磁盘的相关信息
     -D sda,sdb,...,tobal
    -g:显示page相关的速率数据;
    -m:Memory的相关统计数据
    -n:Interface的相关统计数据;
    -p:显示process的相关统计数据;
    -r:显示io请求的相关的统计数据;
    -s:显示swapped的相关统计数据;
    
    --tcp
    --udp
    --raw
    --socket
    
    --ipc
    
    --top-cpu:显示最占用CPU的进程;
    --top-io:最占用io的进程;
    --top-mem:最占用内存的进程;
    --top-lantency:延迟最大的进程;