• Linux命令——ps、pstree


    转载请注明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9814883.html 

    ps

    简介

    ps(processes status)是Unix / Linux上的一个实用程序,用于查看系统上正在运行的进程的信息。ps命令默认安装,即使最小化安装也会有这个命令。ps命令从/proc文件系统中的虚拟文件中读取信息。 ps命令是系统管理的重要工具之一,专门用于进程监视,以帮助程序开发了解Linux系统上的最新情况。
    请注意,ps生成带有标题行的输出,表示每列信息的含义。

    用法演示

    ps aux

    a = show processes for all users 与terminal相关的进程
    u = display the process's user/owner
    x = also show you  (runner of the ps command, root in this case) all processes, not just ones attached to a terminal. This will include processes such as services like crond, upowerd, etc. 除了与终端相关的进程,还显示与terminal无关的进程

    由于加上x后输出信息较多,示例没有加x

    [root@localhost ~]# ps au
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root       1414  0.0  0.0   4060   596 tty1     Ss+  06:05   0:00 /sbin/mingetty /dev/tty1
    root       1416  0.0  0.0   4060   596 tty2     Ss+  06:05   0:00 /sbin/mingetty /dev/tty2
    root       1418  0.0  0.0   4060   596 tty3     Ss+  06:05   0:00 /sbin/mingetty /dev/tty3
    root       1420  0.0  0.0   4060   592 tty4     Ss+  06:05   0:00 /sbin/mingetty /dev/tty4
    root       1422  0.0  0.0   4060   588 tty5     Ss+  06:05   0:00 /sbin/mingetty /dev/tty5
    root       1425  0.0  0.0   4060   592 tty6     Ss+  06:05   0:00 /sbin/mingetty /dev/tty6
    root       1431  0.0  0.0 108320  1916 pts/0    Ss   06:06   0:00 -bash
    root       1535  0.0  0.0 110248  1180 pts/0    R+   07:11   0:00 ps au
    View Code
    • USER:该 process 属于哪个用户
    • PID :该 process 的PID
    • %CPU:该 process 使用掉的 CPU 资源百分比;
    • %MEM:该 process 所占用的实体内存百分比;
    • VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
    • RSS :该 process 占用的固定的内存量 (Kbytes)
    • TTY :该 process 是在那个终端机上面运行,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    • STAT:该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
    • START:该 process 被触发启动的时间;

    R:running
    S:interruptable sleeping 可中断睡眠
    D: uninterruptable sleeping不可中断睡眠
    T: stopped
    Z: zombie僵尸进程。通常,造成僵尸程序的成因是因为该程序应该已经运行完毕,或者是因故应该要终止了, 但是该程序的父程序却无法完整的将该程序结束掉,而造成那个程序一直存在内存当中。 如果你发现在某个程序的 CMD 后面还接上 <defunct> 时,就代表该程序是僵尸程序啦,例如:

    apache  8683  0.0  0.9 83384 9992 ?   Z  14:33   0:00 /usr/sbin/httpd <defunct>
    View Code

    通常僵尸进程交由init或者systemd进程处理,如果init或者systemd也干不死,那只能reboot了。

    +: 前台进程
    l: 多线程进程
    N:低优先级进程
    <:高优先级进程
    s: session leader

    • TIME :该 process 实际使用 CPU 运行的时间。
    • COMMAND:该程序的实际命令为何?

    ps -f 或者 -F可以多显示几列。其中-F显示的能更多些

    [root@localhost ~]# ps -f
    UID         PID   PPID  C STIME TTY          TIME CMD
    root       4360   1305  0 10:11 pts/1    00:00:00 -bash
    root       4384   4360  0 10:11 pts/1    00:00:00 ps -f
    [root@localhost ~]# ps -F
    UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
    root       4360   1305  0 28859  2020   0 10:11 pts/1    00:00:00 -bash
    root       4387   4360  0 38831  1844   1 10:11 pts/1    00:00:00 ps -F
    View Code

    使用-L还可以显示NLWP (number of threads) 和 LWP (thread ID) 列

    [root@localhost ~]# ps -L
       PID    LWP TTY          TIME CMD
      4360   4360 pts/1    00:00:00 bash
      4804   4804 pts/1    00:00:00 ps
    [root@localhost ~]# ps -Lf
    UID         PID   PPID    LWP  C NLWP STIME TTY          TIME CMD
    root       4360   1305   4360  0    1 10:11 pts/1    00:00:00 -bash
    root       4814   4360   4814  0    1 10:20 pts/1    00:00:00 ps -Lf
    [root@localhost ~]# ps -LF
    UID         PID   PPID    LWP  C NLWP    SZ   RSS PSR STIME TTY          TIME CMD
    root       4360   1305   4360  0    1 28859  2024   0 10:11 pts/1    00:00:00 -bash
    root       4824   4360   4824  0    1 38831  1840   1 10:20 pts/1    00:00:00 ps -LF
    View Code

    显示Linux系统下所有活跃进程

    ps -A 或 ps -e

    [root@localhost proc]# ps -e
       PID TTY          TIME CMD
         1 ?        00:00:01 systemd
         2 ?        00:00:00 kthreadd
         3 ?        00:00:00 ksoftirqd/0
         5 ?        00:00:00 kworker/0:0H
         6 ?        00:00:00 kworker/u256:0
         7 ?        00:00:00 migration/0
         8 ?        00:00:00 rcu_bh
         9 ?        00:00:00 rcu_sched
        10 ?        00:00:00 lru-add-drain
        11 ?        00:00:00 watchdog/0
        12 ?        00:00:00 watchdog/1
        13 ?        00:00:00 migration/1
        14 ?        00:00:00 ksoftirqd/1
        16 ?        00:00:00 kworker/1:0H
        17 ?        00:00:00 watchdog/2
        18 ?        00:00:00 migration/2
        19 ?        00:00:00 ksoftirqd/2
        21 ?        00:00:00 kworker/2:0H
        22 ?        00:00:00 watchdog/3
        23 ?        00:00:00 migration/3
        24 ?        00:00:00 ksoftirqd/3
        26 ?        00:00:00 kworker/3:0H
        28 ?        00:00:00 kdevtmpfs
        29 ?        00:00:00 netns
        30 ?        00:00:00 khungtaskd
        31 ?        00:00:00 writeback
        32 ?        00:00:00 kintegrityd
        33 ?        00:00:00 bioset
        34 ?        00:00:00 kblockd
        35 ?        00:00:00 md
        36 ?        00:00:00 edac-poller
        38 ?        00:00:00 kworker/1:1
        43 ?        00:00:00 kswapd0
        44 ?        00:00:00 ksmd
        45 ?        00:00:00 khugepaged
        46 ?        00:00:00 crypto
        54 ?        00:00:00 kthrotld
        56 ?        00:00:00 kmpath_rdacd
        57 ?        00:00:00 kaluad
        58 ?        00:00:00 kpsmoused
        59 ?        00:00:01 kworker/0:2
        60 ?        00:00:00 ipv6_addrconf
        73 ?        00:00:00 deferwq
       105 ?        00:00:00 kauditd
       290 ?        00:00:00 mpt_poll_0
       292 ?        00:00:00 ata_sff
       293 ?        00:00:00 mpt/0
       300 ?        00:00:00 scsi_eh_0
       301 ?        00:00:00 scsi_tmf_0
       302 ?        00:00:00 kworker/u256:2
       303 ?        00:00:00 scsi_eh_1
       304 ?        00:00:00 scsi_tmf_1
       305 ?        00:00:00 scsi_eh_2
       306 ?        00:00:00 scsi_tmf_2
       309 ?        00:00:00 ttm_swap
       310 ?        00:00:00 irq/16-vmwgfx
       322 ?        00:00:00 kworker/3:2
       330 ?        00:00:00 kworker/1:2
       387 ?        00:00:00 kdmflush
       388 ?        00:00:00 bioset
       398 ?        00:00:00 kdmflush
       400 ?        00:00:00 bioset
       413 ?        00:00:00 bioset
       414 ?        00:00:00 xfsalloc
       415 ?        00:00:00 xfs_mru_cache
       416 ?        00:00:00 xfs-buf/dm-0
       417 ?        00:00:00 xfs-data/dm-0
       418 ?        00:00:00 xfs-conv/dm-0
       419 ?        00:00:00 xfs-cil/dm-0
       420 ?        00:00:00 xfs-reclaim/dm-
       421 ?        00:00:00 xfs-log/dm-0
       422 ?        00:00:00 xfs-eofblocks/d
       423 ?        00:00:00 xfsaild/dm-0
       424 ?        00:00:00 kworker/0:1H
       493 ?        00:00:00 systemd-journal
       520 ?        00:00:00 lvmetad
       529 ?        00:00:00 systemd-udevd
       548 ?        00:00:00 nfit
       613 ?        00:00:00 xfs-buf/sda1
       614 ?        00:00:00 xfs-data/sda1
       615 ?        00:00:00 xfs-conv/sda1
       616 ?        00:00:00 xfs-cil/sda1
       617 ?        00:00:00 xfs-reclaim/sda
       618 ?        00:00:00 xfs-log/sda1
       619 ?        00:00:00 xfs-eofblocks/s
       620 ?        00:00:00 xfsaild/sda1
       623 ?        00:00:00 kdmflush
       624 ?        00:00:00 bioset
       631 ?        00:00:00 xfs-buf/dm-2
       632 ?        00:00:00 xfs-data/dm-2
       633 ?        00:00:00 xfs-conv/dm-2
       634 ?        00:00:00 xfs-cil/dm-2
       635 ?        00:00:00 xfs-reclaim/dm-
       636 ?        00:00:00 xfs-log/dm-2
       637 ?        00:00:00 xfs-eofblocks/d
       638 ?        00:00:00 xfsaild/dm-2
       660 ?        00:00:00 auditd
       683 ?        00:00:00 dbus-daemon
       686 ?        00:00:00 polkitd
       688 ?        00:00:00 irqbalance
       689 ?        00:00:00 systemd-logind
       693 ?        00:00:00 crond
       698 ?        00:00:00 login
       705 ?        00:00:00 firewalld
       707 ?        00:00:00 NetworkManager
       754 ?        00:00:00 kworker/2:1H
       826 ?        00:00:00 kworker/3:1H
       838 ?        00:00:00 dhclient
      1021 ?        00:00:00 tuned
      1022 ?        00:00:00 sshd
      1023 ?        00:00:00 rsyslogd
      1170 ?        00:00:00 master
      1176 ?        00:00:00 pickup
      1177 ?        00:00:00 qmgr
      1284 tty1     00:00:00 bash
      1299 ?        00:00:00 kworker/1:1H
      1305 ?        00:00:00 sshd
      1309 pts/0    00:00:00 bash
      1455 ?        00:00:00 kworker/3:3
      1477 ?        00:00:00 memcached
      2198 ?        00:00:00 kworker/2:0
      2321 ?        00:00:00 kworker/0:0
      2894 ?        00:00:00 kworker/2:2
      3163 ?        00:00:00 kworker/2:1
      3331 ?        00:00:00 kworker/0:1
      3346 pts/0    00:00:00 ps
    [root@localhost proc]# ps -A
       PID TTY          TIME CMD
         1 ?        00:00:01 systemd
         2 ?        00:00:00 kthreadd
         3 ?        00:00:00 ksoftirqd/0
         5 ?        00:00:00 kworker/0:0H
         6 ?        00:00:00 kworker/u256:0
         7 ?        00:00:00 migration/0
         8 ?        00:00:00 rcu_bh
         9 ?        00:00:00 rcu_sched
        10 ?        00:00:00 lru-add-drain
        11 ?        00:00:00 watchdog/0
        12 ?        00:00:00 watchdog/1
        13 ?        00:00:00 migration/1
        14 ?        00:00:00 ksoftirqd/1
        16 ?        00:00:00 kworker/1:0H
        17 ?        00:00:00 watchdog/2
        18 ?        00:00:00 migration/2
        19 ?        00:00:00 ksoftirqd/2
        21 ?        00:00:00 kworker/2:0H
        22 ?        00:00:00 watchdog/3
        23 ?        00:00:00 migration/3
        24 ?        00:00:00 ksoftirqd/3
        26 ?        00:00:00 kworker/3:0H
        28 ?        00:00:00 kdevtmpfs
        29 ?        00:00:00 netns
        30 ?        00:00:00 khungtaskd
        31 ?        00:00:00 writeback
        32 ?        00:00:00 kintegrityd
        33 ?        00:00:00 bioset
        34 ?        00:00:00 kblockd
        35 ?        00:00:00 md
        36 ?        00:00:00 edac-poller
        38 ?        00:00:00 kworker/1:1
        43 ?        00:00:00 kswapd0
        44 ?        00:00:00 ksmd
        45 ?        00:00:00 khugepaged
        46 ?        00:00:00 crypto
        54 ?        00:00:00 kthrotld
        56 ?        00:00:00 kmpath_rdacd
        57 ?        00:00:00 kaluad
        58 ?        00:00:00 kpsmoused
        59 ?        00:00:01 kworker/0:2
        60 ?        00:00:00 ipv6_addrconf
        73 ?        00:00:00 deferwq
       105 ?        00:00:00 kauditd
       290 ?        00:00:00 mpt_poll_0
       292 ?        00:00:00 ata_sff
       293 ?        00:00:00 mpt/0
       300 ?        00:00:00 scsi_eh_0
       301 ?        00:00:00 scsi_tmf_0
       302 ?        00:00:00 kworker/u256:2
       303 ?        00:00:00 scsi_eh_1
       304 ?        00:00:00 scsi_tmf_1
       305 ?        00:00:00 scsi_eh_2
       306 ?        00:00:00 scsi_tmf_2
       309 ?        00:00:00 ttm_swap
       310 ?        00:00:00 irq/16-vmwgfx
       322 ?        00:00:00 kworker/3:2
       330 ?        00:00:00 kworker/1:2
       387 ?        00:00:00 kdmflush
       388 ?        00:00:00 bioset
       398 ?        00:00:00 kdmflush
       400 ?        00:00:00 bioset
       413 ?        00:00:00 bioset
       414 ?        00:00:00 xfsalloc
       415 ?        00:00:00 xfs_mru_cache
       416 ?        00:00:00 xfs-buf/dm-0
       417 ?        00:00:00 xfs-data/dm-0
       418 ?        00:00:00 xfs-conv/dm-0
       419 ?        00:00:00 xfs-cil/dm-0
       420 ?        00:00:00 xfs-reclaim/dm-
       421 ?        00:00:00 xfs-log/dm-0
       422 ?        00:00:00 xfs-eofblocks/d
       423 ?        00:00:00 xfsaild/dm-0
       424 ?        00:00:00 kworker/0:1H
       493 ?        00:00:00 systemd-journal
       520 ?        00:00:00 lvmetad
       529 ?        00:00:00 systemd-udevd
       548 ?        00:00:00 nfit
       613 ?        00:00:00 xfs-buf/sda1
       614 ?        00:00:00 xfs-data/sda1
       615 ?        00:00:00 xfs-conv/sda1
       616 ?        00:00:00 xfs-cil/sda1
       617 ?        00:00:00 xfs-reclaim/sda
       618 ?        00:00:00 xfs-log/sda1
       619 ?        00:00:00 xfs-eofblocks/s
       620 ?        00:00:00 xfsaild/sda1
       623 ?        00:00:00 kdmflush
       624 ?        00:00:00 bioset
       631 ?        00:00:00 xfs-buf/dm-2
       632 ?        00:00:00 xfs-data/dm-2
       633 ?        00:00:00 xfs-conv/dm-2
       634 ?        00:00:00 xfs-cil/dm-2
       635 ?        00:00:00 xfs-reclaim/dm-
       636 ?        00:00:00 xfs-log/dm-2
       637 ?        00:00:00 xfs-eofblocks/d
       638 ?        00:00:00 xfsaild/dm-2
       660 ?        00:00:00 auditd
       683 ?        00:00:00 dbus-daemon
       686 ?        00:00:00 polkitd
       688 ?        00:00:00 irqbalance
       689 ?        00:00:00 systemd-logind
       693 ?        00:00:00 crond
       698 ?        00:00:00 login
       705 ?        00:00:00 firewalld
       707 ?        00:00:00 NetworkManager
       754 ?        00:00:00 kworker/2:1H
       826 ?        00:00:00 kworker/3:1H
       838 ?        00:00:00 dhclient
      1021 ?        00:00:00 tuned
      1022 ?        00:00:00 sshd
      1023 ?        00:00:00 rsyslogd
      1170 ?        00:00:00 master
      1176 ?        00:00:00 pickup
      1177 ?        00:00:00 qmgr
      1284 tty1     00:00:00 bash
      1299 ?        00:00:00 kworker/1:1H
      1305 ?        00:00:00 sshd
      1309 pts/0    00:00:00 bash
      1455 ?        00:00:00 kworker/3:3
      1477 ?        00:00:00 memcached
      2198 ?        00:00:00 kworker/2:0
      2321 ?        00:00:00 kworker/0:0
      2894 ?        00:00:00 kworker/2:2
      3163 ?        00:00:00 kworker/2:1
      3331 ?        00:00:00 kworker/0:1
      3350 pts/0    00:00:00 ps
    View Code

    显示某个用户的所有进程

    可以根据数值ID找到用户(-u),也可以根据用户名(-U)

    这里以root为例。参考:【问题】root账号的UID和GID永远是0吗?

    ps -fU root 或 ps -fu 0

    输出结果完全一样

     显示某个组的所有进程

    同上,只不过换成-G

    ps -fG 0 或 ps -fG root

    根据PID显示进程

    -p--pid

    [root@localhost home]# ps -fp 698
    UID         PID   PPID  C STIME TTY          TIME CMD
    root        698      1  0 09:02 ?        00:00:00 login -- root
    [root@localhost home]# ps -f --pid 698
    UID         PID   PPID  C STIME TTY          TIME CMD
    root        698      1  0 09:02 ?        00:00:00 login -- root
    View Code

    也可以一次显示多个进程

    [root@localhost home]# ps -f --pid 698,1309
    UID         PID   PPID  C STIME TTY          TIME CMD
    root        698      1  0 09:02 ?        00:00:00 login -- root
    root       1309   1305  0 09:04 pts/0    00:00:00 -bash
    [root@localhost home]# ps -fp 698,1309
    UID         PID   PPID  C STIME TTY          TIME CMD
    root        698      1  0 09:02 ?        00:00:00 login -- root
    root       1309   1305  0 09:04 pts/0    00:00:00 -bash
    View Code

    根据tty显示进程

    [root@localhost home]# ps -t tty1
       PID TTY          TIME CMD
      1284 tty1     00:00:00 bash
    [root@localhost home]# ps -ft tty1
    UID         PID   PPID  C STIME TTY          TIME CMD
    root       1284    698  0 09:02 tty1     00:00:00 -bash
    View Code

    显示进程树

    对于父子进程,如果父亲死了,子进程的的父进程就变成了init或systemd

    显示系统上所有进程的进程树

    ps -e --forest

    显示给定进程的进程树

    -C:Select by command name。这个命令会把name指定进程的所有子进程显示出来

    [root@localhost home]# ps -f --forest -C sshd
    UID         PID   PPID  C STIME TTY          TIME CMD
    root       1022      1  0 09:02 ?        00:00:00 /usr/sbin/sshd -D
    root       1305   1022  0 09:04 ?        00:00:00  \_ sshd: root@pts/0,pts/1,pts/2
    [root@localhost home]# ps -ef --forest | grep -v grep | grep sshd 
    root       1022      1  0 09:02 ?        00:00:00 /usr/sbin/sshd -D
    root       1305   1022  0 09:04 ?        00:00:00  \_ sshd: root@pts/0,pts/1,pts/2
    View Code

    指定查看ps某些列的输出

    使用-o选项

    ruser,pid,ppid,lwp(线程low weight process),psr(处理器processor),args(用comm也行),etime(elapsed time,自从该进程/线程启动过了多长时间)

    [root@localhost home]# ps -o pid,ppid,user,cmd
       PID   PPID USER     CMD
      4967   1305 root     -bash
     16053   4967 root     ps -o pid,ppid,user,cmd
    View Code

    根据PID查找进程

    [root@localhost home]# ps -f --forest -C sshd
    UID         PID   PPID  C STIME TTY          TIME CMD
    root       1022      1  0 09:02 ?        00:00:00 /usr/sbin/sshd -D
    root       1305   1022  0 09:04 ?        00:00:00  \_ sshd: root@pts/0,pts/1,pts/2
    [root@localhost home]# ps -p 1022 -o comm
    COMMAND
    sshd
    View Code

    显示一个进程及其所有子进程的pid

    [root@localhost home]# ps -C sshd -o pid
       PID
      1022
      1305
    View Code

    显示某一服务执行多长时间

    [root@localhost home]# ps -eo comm,etime,user | grep sshd
    sshd               02:06:51 root
    sshd               02:04:49 root
    View Code

    查找当前系统下,CPU 或 内存占用率最高的进程

    [root@localhost home]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
       PID   PPID CMD                         %MEM %CPU
       705      1 /usr/bin/python -Es /usr/sb  0.7  0.0
      1021      1 /usr/bin/python -Es /usr/sb  0.4  0.0
       686      1 /usr/lib/polkit-1/polkitd -  0.3  0.0
       707      1 /usr/sbin/NetworkManager --  0.2  0.0
      1023      1 /usr/sbin/rsyslogd -n        0.2  0.0
         1      0 /usr/lib/systemd/systemd --  0.1  0.0
      1305   1022 sshd: root@pts/0,pts/1,pts/  0.1  0.0
       838    707 /sbin/dhclient -d -q -sf /u  0.1  0.0
       529      1 /usr/lib/systemd/systemd-ud  0.1  0.0
    [root@localhost home]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
       PID   PPID CMD                         %MEM %CPU
         1      0 /usr/lib/systemd/systemd --  0.1  0.0
         2      0 [kthreadd]                   0.0  0.0
         3      2 [ksoftirqd/0]                0.0  0.0
         5      2 [kworker/0:0H]               0.0  0.0
         6      2 [kworker/u256:0]             0.0  0.0
         7      2 [migration/0]                0.0  0.0
         8      2 [rcu_bh]                     0.0  0.0
         9      2 [rcu_sched]                  0.0  0.0
        10      2 [lru-add-drain]              0.0  0.0
    View Code

    对于那些未响应进程,或占用资源奇高的进程可以找到他并杀死

    首先找到该进程,然后杀死该进程

    借助watch命令执行实时进程监控

    ps命令显示静态信息,可以借助watch命令实时监控进程信息,还能制定监控那些项

    watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

    Every 1.0s: ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head                             Fri Oct 19 11:18:19 2018
    
       PID   PPID CMD                         %MEM %CPU
       705      1 /usr/bin/python -Es /usr/sb  0.7  0.0
      1021      1 /usr/bin/python -Es /usr/sb  0.4  0.0
       686      1 /usr/lib/polkit-1/polkitd -  0.3  0.0
       707      1 /usr/sbin/NetworkManager --  0.2  0.0
      1023      1 /usr/sbin/rsyslogd -n        0.2  0.0
         1      0 /usr/lib/systemd/systemd --  0.1  0.0
      1305   1022 sshd: root@pts/0,pts/1,pts/  0.1  0.0
       838    707 /sbin/dhclient -d -q -sf /u  0.1  0.0
       529      1 /usr/lib/systemd/systemd-ud  0.1  0.0
    View Code

    显示安全信息

    尤其对于SELinux,如下命令显示安全信息

    ps -eM  或  ps --context

    也可以指定输出哪些项,使用选项-o

    ps -eo  ruser,pid,ppid,lwp(线程low weight process),psr(处理器processor),args(用comm也行),etime(elapsed time,自从该进程/线程启动过了多长时间)

    [root@localhost home]# ps -eo  euser,ruser,suser,fuser,f,comm,label
    EUSER    RUSER    SUSER    FUSER    F COMMAND         LABEL
    root     root     root     root     4 systemd         system_u:system_r:init_t:s0
    root     root     root     root     1 kthreadd        system_u:system_r:kernel_t:s0
    root     root     root     root     1 ksoftirqd/0     system_u:system_r:kernel_t:s0
    root     root     root     root     1 kworker/0:0H    system_u:system_r:kernel_t:s0
    root     root     root     root     1 kworker/u256:0  system_u:system_r:kernel_t:s0
    root     root     root     root     1 migration/0     system_u:system_r:kernel_t:s0
    root     root     root     root     1 rcu_bh          system_u:system_r:kernel_t:s0
    View Code

    与watch搭配使用动态显示进程信息

    watch -n 2 'ps -aef | grep firefox'

    pstree

    ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init 或 systemd进程。

    最小化安装时,默认没有这个命令。需要单独安装yum -y install psmisc

    简介

    pstree将运行进程显示为树。 如果省略pid,树将以pid或init为根。 如果指定了用户名,则会显示该用户拥有进程的所有进程树。 pstree在视觉上合并相同的分支,方法是将它们放在方括号中,并在前面添加重复计数

    用法演示

    最简单的做法

    不带任何参数

    [root@localhost home]# pstree
    systemd─┬─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─auditd───{auditd}
            ├─crond
            ├─dbus-daemon───{dbus-daemon}
            ├─firewalld───{firewalld}
            ├─irqbalance
            ├─login───bash
            ├─lvmetad
            ├─master─┬─pickup
            │        └─qmgr
            ├─memcached───5*[{memcached}]
            ├─polkitd───5*[{polkitd}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─sshd───sshd─┬─bash───man───less
            │             ├─bash
            │             └─bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            └─tuned───4*[{tuned}]
    View Code

    显示命令行参数

    使用-a参数

    [root@localhost home]# pstree -a
    systemd --switched-root --system --deserialize 22
      ├─NetworkManager --no-daemon
      │   ├─dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf...
      │   └─2*[{NetworkManager}]
      ├─auditd
      │   └─{auditd}
      ├─crond -n
      ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
      │   └─{dbus-daemon}
      ├─firewalld -Es /usr/sbin/firewalld --nofork --nopid
      │   └─{firewalld}
      ├─irqbalance --foreground
      ├─login     
      │   └─bash
      ├─lvmetad -f
      ├─master -w
      │   ├─pickup -l -t unix -u
      │   └─qmgr -l -t unix -u
      ├─memcached -d -u root
      │   └─5*[{memcached}]
      ├─polkitd --no-debug
      │   └─5*[{polkitd}]
      ├─rsyslogd -n
      │   └─2*[{rsyslogd}]
      ├─sshd -D
      │   └─sshd
      │       ├─bash
      │       │   └─man ps
      │       │       └─less -s
      │       ├─bash
      │       └─bash
      │           └─pstree -a
      ├─systemd-journal
      ├─systemd-logind
      ├─systemd-udevd
      └─tuned -Es /usr/sbin/tuned -l -P
          └─4*[{tuned}]
    View Code

    强制pstree展开一样的子树

    使用-c参数

    [root@localhost home]# pstree -c
    systemd─┬─NetworkManager─┬─dhclient
            │                ├─{NetworkManager}
            │                └─{NetworkManager}
            ├─auditd───{auditd}
            ├─crond
            ├─dbus-daemon───{dbus-daemon}
            ├─firewalld───{firewalld}
            ├─irqbalance
            ├─login───bash
            ├─lvmetad
            ├─master─┬─pickup
            │        └─qmgr
            ├─memcached─┬─{memcached}
            │           ├─{memcached}
            │           ├─{memcached}
            │           ├─{memcached}
            │           └─{memcached}
            ├─polkitd─┬─{polkitd}
            │         ├─{polkitd}
            │         ├─{polkitd}
            │         ├─{polkitd}
            │         └─{polkitd}
            ├─rsyslogd─┬─{rsyslogd}
            │          └─{rsyslogd}
            ├─sshd───sshd─┬─bash───man───less
            │             ├─bash
            │             └─bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            └─tuned─┬─{tuned}
                    ├─{tuned}
                    ├─{tuned}
                    └─{tuned}
    View Code

    对特定进程高亮显示

    使用-H参数

    pstree -H [PID]

    [root@localhost home]# ps
       PID TTY          TIME CMD
      4967 pts/2    00:00:00 bash
     18153 pts/2    00:00:00 ps
    [root@localhost home]# pstree -H 4967
    systemd─┬─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─auditd───{auditd}
            ├─crond
            ├─dbus-daemon───{dbus-daemon}
            ├─firewalld───{firewalld}
            ├─irqbalance
            ├─login───bash
            ├─lvmetad
            ├─master─┬─pickup
            │        └─qmgr
            ├─memcached───5*[{memcached}]
            ├─polkitd───5*[{polkitd}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─sshd───sshd─┬─bash───man───less
            │             ├─bash
            │             └─bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            └─tuned───4*[{tuned}]
    View Code

    显示进程组ID

    使用-g参数

    [root@localhost home]# pstree -g
    systemd(1)─┬─NetworkManager(707)─┬─dhclient(838)
               │                     ├─{NetworkManager}(707)
               │                     └─{NetworkManager}(707)
               ├─auditd(660)───{auditd}(660)
               ├─crond(693)
               ├─dbus-daemon(683)───{dbus-daemon}(683)
               ├─firewalld(705)───{firewalld}(705)
               ├─irqbalance(688)
               ├─login(698)───bash(1284)
               ├─lvmetad(520)
               ├─master(1170)─┬─pickup(1170)
               │              └─qmgr(1170)
               ├─memcached(1477)─┬─{memcached}(1477)
               │                 ├─{memcached}(1477)
               │                 ├─{memcached}(1477)
               │                 ├─{memcached}(1477)
               │                 └─{memcached}(1477)
               ├─polkitd(686)─┬─{polkitd}(686)
               │              ├─{polkitd}(686)
               │              ├─{polkitd}(686)
               │              ├─{polkitd}(686)
               │              └─{polkitd}(686)
               ├─rsyslogd(1023)─┬─{rsyslogd}(1023)
               │                └─{rsyslogd}(1023)
               ├─sshd(1022)───sshd(1305)─┬─bash(1309)───man(4261)───less(4261)
               │                         ├─bash(4360)
               │                         └─bash(4967)───pstree(18242)
               ├─systemd-journal(493)
               ├─systemd-logind(689)
               ├─systemd-udevd(529)
               └─tuned(1021)─┬─{tuned}(1021)
                             ├─{tuned}(1021)
                             ├─{tuned}(1021)
                             └─{tuned}(1021)
    View Code

    根据PID排序输出

    默认情况下,pstree对有相同祖先的进程按名字排序。借助-n参数可以按pid排序

    [root@localhost home]# pstree -n
    systemd─┬─systemd-journal
            ├─lvmetad
            ├─systemd-udevd
            ├─auditd───{auditd}
            ├─dbus-daemon───{dbus-daemon}
            ├─polkitd───5*[{polkitd}]
            ├─irqbalance
            ├─systemd-logind
            ├─crond
            ├─login───bash
            ├─firewalld───{firewalld}
            ├─NetworkManager─┬─2*[{NetworkManager}]
            │                └─dhclient
            ├─tuned───4*[{tuned}]
            ├─sshd───sshd─┬─bash───man───less
            │             ├─bash
            │             └─bash───pstree
            ├─rsyslogd───2*[{rsyslogd}]
            ├─master─┬─qmgr
            │        └─pickup
            └─memcached───5*[{memcached}]
    View Code

    -p参数可以显示pid

    [root@localhost home]# pstree -pn
    systemd(1)─┬─systemd-journal(493)
               ├─lvmetad(520)
               ├─systemd-udevd(529)
               ├─auditd(660)───{auditd}(661)
               ├─dbus-daemon(683)───{dbus-daemon}(684)
               ├─polkitd(686)─┬─{polkitd}(699)
               │              ├─{polkitd}(700)
               │              ├─{polkitd}(701)
               │              ├─{polkitd}(702)
               │              └─{polkitd}(703)
               ├─irqbalance(688)
               ├─systemd-logind(689)
               ├─crond(693)
               ├─login(698)───bash(1284)
               ├─firewalld(705)───{firewalld}(835)
               ├─NetworkManager(707)─┬─{NetworkManager}(720)
               │                     ├─{NetworkManager}(723)
               │                     └─dhclient(838)
               ├─tuned(1021)─┬─{tuned}(1261)
               │             ├─{tuned}(1262)
               │             ├─{tuned}(1263)
               │             └─{tuned}(1276)
               ├─sshd(1022)───sshd(1305)─┬─bash(1309)───man(4261)───less(4272)
               │                         ├─bash(4360)
               │                         └─bash(4967)───pstree(18705)
               ├─rsyslogd(1023)─┬─{rsyslogd}(1026)
               │                └─{rsyslogd}(1030)
               ├─master(1170)─┬─qmgr(1177)
               │              └─pickup(5963)
               └─memcached(1477)─┬─{memcached}(1478)
                                 ├─{memcached}(1479)
                                 ├─{memcached}(1480)
                                 ├─{memcached}(1481)
                                 └─{memcached}(1482)
    View Code

    显示特定用户下进程的进程树

    [root@localhost home]# pstree root
    systemd─┬─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─auditd───{auditd}
            ├─crond
            ├─dbus-daemon───{dbus-daemon}
            ├─firewalld───{firewalld}
            ├─irqbalance
            ├─login───bash
            ├─lvmetad
            ├─master─┬─pickup
            │        └─qmgr
            ├─memcached───5*[{memcached}]
            ├─polkitd───5*[{polkitd}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─sshd───sshd─┬─bash───man───less
            │             ├─bash
            │             └─bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            └─tuned───4*[{tuned}]
    View Code

    只显示具体进程的父子信息

    使用-s参数

    远程终端链接使用pstree显示乱码

    使用-G参数

    [root@localhost ~]# pstree -G
    systemdqwqNetworkManagerqwqdhclient
            x                mq2*[{NetworkManager}]
            tqagetty
            tqauditdqqq{auditd}
            tqcrond
            tqdbus-daemonqqq{dbus-daemon}
            tqfirewalldqqq{firewalld}
            tqirqbalance
            tqlvmetad
            tqmasterqwqpickup
            x        mqqmgr
            tqpolkitdqqq5*[{polkitd}]
            tqrsyslogdqqq2*[{rsyslogd}]
            tqsshdqqqsshdqwqbashqqqpstree
            x             mqbashqqqmanqqqless
            tqsystemd-journal
            tqsystemd-logind
            tqsystemd-udevd
            mqtunedqqq4*[{tuned}]
    View Code

     

  • 相关阅读:
    sed
    zabbix时间不同步
    zabbix-agent安装
    zabbix安装(网络)
    sendmail启动报错
    12306:被骂十年不吭声,终成大器
    一文带你看清HTTP所有概念(转)
    为什么 K8s 在阿里能成功(转)
    一文解读融资方式
    一文解读工业互联网 (转)
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9814883.html
Copyright © 2020-2023  润新知