说明
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
...