ps命令是英文单词process的缩写,用于显示当前系统的进程状态。包括进程PID、进程拥有者、系统资源(处理器与内存)使用占比、运行状态等。
ps命令的语法格式如下:
ps [选项]
ps命令的选项很多,可以分类为基础选项、按列选择选项、输出格式选项、线程显示选项和杂项等。通常使用基础选项就可以满足大多数需求,下面只列出一些常用的基础选项和个别其它选项。
选项 | 含义 |
---|---|
-A或者-e | 显示所有进程信息 |
-a | 除会话首领进程外,显示所有tty终端进程信息 |
a | 显示所有tty终端进程信息,包括其它用户 |
-d | 除会话首领进程外,显示所有进程信息 |
r |
只显示正在运行的进程 |
T | 显示当前终端的所有进程 |
x | 显示不区分tty终端的进程信息 |
-f | 以完整格式(包括命令行)显示进程信息 |
-l | 以长格式显示进程信息,即详细格式 |
-p PID | 显示指定进程ID值为PID的进程信息 |
-u <uid> | 显示进程拥有者为uid的的进程信息 |
说明:在ps的选项中,不少选项前面有“-”或没有“-”都能执行,但含义是不一样的,输出内容自然也不一样。比如选项-a和a,-e和e就完全不是一个含义。
实例演示
1、显示系统中全部的进程信息,含详细信息:
[root@node1 ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 168876 15484 ? Ss 3月11 0:05 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 18
root 2 0.0 0.0 0 0 ? S 3月11 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 3月11 0:00 [rcu_gp]
……此处省略后续输出……
注:命令【ps aux】也有这个功能,但输出有些微差异。
2、以完整格式输出所有进程信息
[root@node1 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 3月11 ? 00:00:05 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 18
root 2 0 0 3月11 ? 00:00:00 [kthreadd]
root 3 2 0 3月11 ? 00:00:00 [rcu_gp]
……此处省略其它输出……
注:虽然【ps ef】也能执行,但输出的内容就有很多差别了。
3、以完整格式输出UID为zhangsan的进程信息
[zhangsan@node1 ~]$ ps -fu zhangsan
UID PID PPID C STIME TTY TIME CMD
zhangsan 451102 451101 0 09:39 pts/0 00:00:00 -bash
zhangsan 451199 451102 0 09:39 pts/0 00:00:00 ps -fu zhangsan
4、以长格式显示指定PID的进程信息
[root@node1 ~]# ps -lp 2657
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 2657 1 0 80 0 - 564073 do_wai ? 00:05:18 dockerd
5、结合管道线,过滤显示满足条件的进程信息
因ps的输出内容较多,实际应用中通常会结合管道线和其它命令,过滤输出满足条件的进程信息。(1)查看所有sshd进程的信息
# 显示所有sshd进程信息
[root@node1 ~]# ps -ef | grep sshd
root 1067 1 0 3月11 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 398156 1067 0 3月14 ? 00:00:00 sshd: root [priv]
root 398160 398156 0 3月14 ? 00:00:00 sshd: root@pts/0
root 398165 1067 0 3月14 ? 00:00:00 sshd: root [priv]
root 398179 398165 0 3月14 ? 00:00:00 sshd: root@notty
root 452389 398161 0 09:53 pts/0 00:00:00 grep --color=auto sshd
(2)按进程的内存使用量(第3列)降序输出
# 按进程内存使用量降序输出
[root@node1 ~]# ps aux | sort -rnk 4
root 2657 0.1 1.2 2256292 96396 ? Ssl 3月11 5:19 /usr/bin/dockerd --live-restore
root 82251 0.0 0.6 378096 49332 ? Ssl 3月12 0:04 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
root 2665 0.1 0.5 1765276 43636 ? Ssl 3月11 6:33 containerd --config /var/run/docker/containerd/containerd.toml --log-level info