ps:查看进程

xiaohai 2021-05-14 10:29:46 1577人围观 标签: Linux 
简介ps命令用于列出执行ps命令的那个时刻的进程快照。如果要动态的显示进程的信息,可以使用top命令。
说明

  ps命令用于列出执行ps命令的那个时刻的进程快照。如果要动态的显示进程的信息,可以使用top命令。

格式

  ps [option]

常用参数说明
  • -a:显示所有终端下执行的进程
  • a:显示与终端相关的所有进程,包含每个进程的完整路径
  • x:显示与终端无关的所有进程
  • u:显示进程的用户信息
  • -u:显示指定用户相关的进程信息
  • -e:显示所有进程
  • -f:额外显示UID、PPID、C与STIME栏位
  • f:显示进程树
  • -H:显示进程树
  • -l:以详细的格式显示进程的状况
  • -o:自定义输出指定字段,以逗号隔开
  • —sort key:key表示为指定字段排序,默认升序,+key表升序,-key表降序

注意:ps命令中-a和a的这两种写法,功能不一样。

示例

1、不使用任何参数,将会显示当前所在终端的进程

[root@localhost ~]# ps
   PID TTY          TIME CMD
 39430 pts/0    00:00:00 bash
 39451 pts/0    00:00:00 ps

PID:进程的标识号
TTY:进程所属的终端控制台
TIME:进程所使用CPU的总时间
CMD:列出正在执行的命令行

2、ps常用命令组合(命令1[-ef])

[root@localhost ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 01:40 ?        00:00:18 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2      0  0 01:40 ?        00:00:00 [kthreadd]
root          3      2  0 01:40 ?        00:00:01 [ksoftirqd/0]
root          5      2  0 01:40 ?        00:00:00 [kworker/0:0H]
root          6      2  0 01:40 ?        00:00:03 [kworker/u256:0]
root          7      2  0 01:40 ?        00:00:00 [migration/0]
root          8      2  0 01:40 ?        00:00:00 [rcu_bh]
root          9      2  0 01:40 ?        00:00:00 [rcuob/0]
root         10      2  0 01:40 ?        00:00:00 [rcuob/1]
....

UID:进程被UID所拥有
PID:进程的标识号
PPID:父进程的标识号
C:CPU使用资源的百分比
STIME:进程开始时间
TTY:该进程在哪个终端机上运行,若与终端无关,则显示”?”,另外tty1-tty6是本机上面的登入者进程,若为pts/0,则表示由网络连接主机的进程
TIME:进程使用CPU的总时间
CMD:正在执行的命令行

可以组合grep来一起用

[root@localhost ~]# ps -ef|grep ssh
root       1096      1  0 01:41 ?        00:00:00 /usr/sbin/sshd -D
root       3751   1096  0 09:59 ?        00:00:03 sshd: root@pts/1
root      39425   1096  0 22:25 ?        00:00:00 sshd: root@pts/0
root      39774  39430  0 22:32 pts/0    00:00:00 grep --color=auto ssh

3、ps常用命令组合(命令2[aux])

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3  52160  3176 ?        Ss   01:40   0:18 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    01:40   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    01:40   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   01:40   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    01:40   0:03 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    01:40   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    01:40   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    01:40   0:00 [rcuob/0]
root         10  0.0  0.0      0     0 ?        S    01:40   0:00 [rcuob/1]
....

USER:该进程所属的用户
PID:进程的进程号
%CPU:该进程使用掉的CPU资源百分比
%MEM:该进程所占用物理内存的百分比
VSZ:该进程使用掉的虚拟内存量(单位为Kbytes)
RSS:该进程占用的固定内存量(单位为Kbytes)
TTY:该进程在哪个终端机上运行,若与终端无关,则显示”?”,另外tty1-tty6是本机上面的登入者进程,若为pts/0,则表示由网络连接主机的进程
STAT:该进程目前的状态,主要的状态有如下几种:

  • R:正在运行,或者是可以运行
  • S:正在中断睡眠中,可以有某些信号唤醒
  • D:不可中断水煎
  • T:正在侦测或停止了
  • Z:已经终止,但是父进程无法正常终止它,从而变成了僵尸进程。
  • +:前台进程
  • l:多线程进程
  • N:低优先级进程
  • <:高优先级进程
  • s:进程领导者
  • L:已将页面锁定到内存中
    START:该进程被触发启动的时间
    TIME:该进程实际使用CPU的运作时间
    COMMAND:该进程的实际命令

4、显示指定用户的相关进程信息

[root@localhost ~]# ps -u root
   PID TTY          TIME CMD
     1 ?        00:00:18 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:01 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     6 ?        00:00:03 kworker/u256:0
...

5、以详细的格式显示进程状况

[root@localhost ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  39430  39425  0  80   0 - 28882 wait   pts/0    00:00:00 bash
0 R     0  40220  39430  0  80   0 - 34339 -      pts/0    00:00:00 ps

F:代表这个进程的标志,4代表使用者为super user
S:代表这个进程的状态(STAT)
UID:该进程被UID所拥有
PID:进程的标识号
PPID:父进程的ID
C:CPU使用的资源百分比
PRI:优先执行顺序
NI:Nice值
ADDR:指出该进程在内存的哪个部分。如果是running的进程,则一般是”-“.
SZ:使用掉的内存大小
WCHAN:目前这个进程是否正在运行当中,若为”-“则表示正在运作
TTY:该进程在哪个终端机上运行,若与终端无关,则显示”?”,另外tty1-tty6是本机上面的登入者进程,若为pts/0,则表示由网络连接主机的进程
TIME:该进程实际使用CPU的运作时间
CMD:该进程的实际命令

6、显示进程树

[root@localhost ~]# ps -eH
  PID TTY      STAT   TIME COMMAND
    ...
  1096 ?        00:00:00   sshd
  3751 ?        00:00:03     sshd
  3755 pts/1    00:00:00       bash
 39425 ?        00:00:00     sshd
 39430 pts/0    00:00:00       bash
 40452 pts/0    00:00:00         ps
  1274 ?        00:00:01   iprupdate
  1276 ?        00:00:01   iprinit
  1289 ?        00:00:00   mysqld_safe
  1793 ?        00:00:46     mysqld
  1340 ?        00:00:00   iprdump
  1369 ?        00:00:00   nginx
 26062 ?        00:00:00     nginx
  2162 ?        00:00:05   php-fpm
  2163 ?        00:00:00     php-fpm
  2164 ?        00:00:00     php-fpm
  2171 ?        00:04:11   mongod
  2236 tty1     00:00:00   agetty


[root@localhost ~]# ps axf
   PID TTY      STAT   TIME COMMAND
   ...
   1096 ?        Ss     0:00 /usr/sbin/sshd -D
  3751 ?        Ss     0:03  \_ sshd: root@pts/1
  3755 pts/1    Ss+    0:00  |   \_ -bash
 39425 ?        Ss     0:00  \_ sshd: root@pts/0
 39430 pts/0    Ss     0:00      \_ -bash
 40521 pts/0    R+     0:00          \_ ps axf
  1274 ?        Ss     0:01 /sbin/iprupdate --daemon
  1276 ?        Ss     0:01 /sbin/iprinit --daemon
  1289 ?        S      0:00 /bin/sh /apps/mysql/bin/mysqld_safe --datadir=/apps/mysql/data --pid-file=/apps/mysql/data/Centos7_HostName.pid
  1793 ?        Sl     0:46  \_ /apps/mysql/bin/mysqld --basedir=/apps/mysql --datadir=/apps/mysql/data --plugin-dir=/apps/mysql/lib/plugin --user=mysql --log-error=Centos7_HostName.err --p
  1340 ?        Ss     0:00 /sbin/iprdump --daemon
  1369 ?        Ss     0:00 nginx: master process /apps/nginx/sbin/nginx
 26062 ?        S      0:00  \_ nginx: worker process
  2162 ?        Ss     0:05 php-fpm: master process (/apps/php7.2.5/etc/php-fpm.conf)
  2163 ?        S      0:00  \_ php-fpm: pool www
  2164 ?        S      0:00  \_ php-fpm: pool www
  2171 ?        Sl     4:12 /apps/mongodb/bin/mongod --config /apps/mongodb/mongodb.conf
  2236 tty1     Ss+    0:00 /sbin/agetty --noclear tty1 linux

7、输出指定的字段
(1)、AIX格式:使用man ps查看AIX FORMAT DESCRIPTORS部分内容
(2)、使用标准格式:使用man ps查看STANDARD FORMAT SPECIFIERS部分内容

[root@localhost ~]# ps -o pid,ppid,pgrp,session,tpgid,comm
   PID   PPID   PGRP   SESS  TPGID COMMAND
 39430  39425  39430  39430  40920 bash
 40920  39430  40920  39430  40920 ps


[root@localhost ~]# ps -eo "%C : %p : %z : %a" --sort -vsz
%CPU :    PID :    VSZ : COMMAND
 0.0 :   1793 : 1302676 : /apps/mysql/bin/mysqld --basedir=/apps/mysql --datadir=/apps/mysql/data --plugin-dir=/apps/mysql/lib/plugin --user=mysql --log-error=Centos7_HostName.err --pid-fil
 0.3 :   2171 : 1011664 : /apps/mongodb/bin/mongod --config /apps/mongodb/mongodb.conf
 0.0 :    858 : 566064 : /usr/bin/python -Es /usr/sbin/tuned -l -P
 0.0 :    874 : 529352 : /usr/lib/polkit-1/polkitd --no-debug
 0.0 :    849 : 461024 : /usr/sbin/NetworkManager --no-daemon
 ....

查看进程在哪个cup上运行

[root@localhost ~]# ps -eo pid,args,psr
   PID COMMAND                     PSR
     1 /usr/lib/systemd/systemd --   0
     2 [kthreadd]                    0
     3 [ksoftirqd/0]                 0
     ...