Linux ps 命令


简介

ps 命令是 Linux 中一个广泛使用的实用程序,它提供当前进程及其状态的快照。它有助于监控正在运行的进程,识别进程 ID(PID)、终端类型(TTY)、CPU 时间使用情况、命令名称、用户 ID 及其他信息。本文全面概述了 ps 命令在现实生活中的各种用例。

ps 命令的语法

ps 命令的基本语法如下所示:

$ ps [OPTIONS]

ps 命令支持三种不同的语法风格:Unix、BSDGNU。Unix 风格的语法可以包装并在前面加上连字符,BSD 可以包装但不能在前面加上连字符,而 GNU 语法使用长选项并在前面加上双连字符。

ps 命令选项

以下是与 ps 命令一起使用的一些开关:

  • ps -ef 或 ps -aux - 以完整格式列出当前正在运行的进程

  • ps -ax - 列出当前正在运行的进程

  • ps -u <用户名> - 列出特定用户的进程

  • ps -C <命令> - 列出给定命令的进程

  • ps -p <PID> - 列出具有给定PID 的进程

  • ps -ppid <PPID> - 列出具有给定父进程 ID(PPID)的进程

  • pstree - 以层次结构显示进程

  • ps -L - 列出特定进程的所有线程

  • ps --sort pmem - 查找内存泄漏

  • ps -eo - 显示安全信息

  • ps -U root -u root u - 显示由 root 运行的进程

ps 命令的用例

让我们看看ps 命令在现实生活中的用例,这对系统管理员很有帮助。

列出所有正在运行的进程

要查看系统上当前正在运行的所有进程,请使用以下命令:

$ ps -ef
UID    	PID  PPID  C  STIME  TTY     TIME     CMD
root      1 	0    0  Jan31   ?    00:00:00  /sbin/init splash
root      2 	0    0  Jan31   ?    00:00:00  [kthreadd]
root      3 	2    0  Jan31   ?    00:00:00  [rcu_gp]
root      4 	2    0  Jan31   ?    00:00:00  [rcu_par_gp]
root      5 	2    0  Jan31   ?    00:00:00  [kworker/0:0-events]
...

在以上输出中,PID 表示正在运行的命令的进程 ID,TTY 是正在执行当前命令的终端类型,TIME 是 CPU 执行该进程所需的时间,CMD 是当前命令。

按 CPU 或内存使用情况过滤列出所有正在运行的进程

要查看按CPU 或内存使用情况过滤的所有当前正在运行的进程,请使用以下命令:

$ pd-aux
USER   	 PID   %CPU  %MEM   VSZ   RSS   TTY  STAT  START   TIME  COMMAND
root      1    0.0   0.0   19404  3116   ?    Ss    Jan31   0:00  /sbin/init splash
root      2    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [kthreadd]
root      3    0.0   0.0     0 	   0     ?    R	   Jan31   0:00  [rcu_gp]
root      4    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [rcu_par_gp]
root      5    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [kworker/0:0-events]
...

在以上输出中,%CPU 显示进程当前的CPU 使用率,%MEM 显示进程的内存使用率,VSZ 是虚拟内存的大小,RSS 是驻留池的大小。

列出特定用户的进程

要查看特定用户正在运行的所有进程,请使用以下命令:

$ ps -u <username>

例如,要查看root 用户的所有进程,请使用以下命令:

$ ps -u root
USER   	PID  %CPU   %MEM    VSZ   RSS   TTY    STAT  START   TIME  COMMAND
root     1    0.0   0.0    19404  3116   ?    	Ss   Jan31   0:00  /sbin/init splash
root     2    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [kthreadd]
root     3    0.0   0.0      0 	    0    ?    	R    Jan31   0:00  [rcu_gp]
root     4    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [rcu_par_gp]
root     5    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [kworker/0:0-events]
...

特定命令的进程列表

要查看特定命令正在运行的所有进程,请使用以下命令:

$ ps -C <command>

例如,要查看python 命令的所有正在运行的进程,请使用以下命令:

$ ps -C python
USER   	PID  %CPU  %MEM	  VSZ   RSS   TTY   STAT   START   TIME  COMMAND
root   	123   0.0   1.2  95768  23844  ?     S	   12:00   0:05  python
user1  	456   0.2   0.9  95768  23844  ?     S	   13:00   0:03  python
...

列出具有给定 PID 的进程

要查看具有给定PID 的进程,请使用以下命令:

$ ps -p <PID>

例如,要查看PID 123 的进程,请使用以下命令:

$ ps -p 123
USER   	PID  %CPU  %MEM	  VSZ    RSS  TTY   STAT   START   TIME  COMMAND
root   	123   0.0   1.2  95768  23844  ?     S	   12:00   0:05  python

结论

ps 命令是管理 Linux 上进程的极其强大的工具。无论您是想监控特定进程、查找占用过多内存或 CPU 的进程,还是监控系统上运行的所有进程,ps 命令都能提供您所需的信息。对于任何 Linux 管理员或高级用户来说,它都是必不可少的工具。

更新于: 2023年4月19日

9K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告