ps(进程状态)是一个用于查看系统上一系列正在运行的进程信息的原生 Unix/Linux 实用程序:它从 /proc 文件系统中的虚拟文件中读取这些信息。它是系统管理中的重要工具之一,特别是在进程监视方面,可以帮助您了解 Linux 系统中正在发生的情况。
它有许多选项可用于操作其输出,但实际上您会发现其中一小部分在日常使用中非常有用。
在本文中,我们将介绍 ps 命令的 30 个有用示例,用于监视 Linux 系统上正在运行的活动进程。
请注意,ps 生成带有标题行的输出,该行表示每列信息的含义,您可以在 ps 手册页中找到所有标签的含义。
列出当前 Shell 中的所有进程
1. 如果不带任何参数运行 ps 命令,它会显示当前 Shell 的进程。
$ ps

以不同格式打印所有进程
2. 以通用(Unix/Linux)格式显示 Linux 系统上的每个活动进程。
$ ps -A OR $ ps -e

3. 以 BSD 格式显示所有进程。
$ ps au OR $ ps axu

4.要执行完整格式的列表,请添加-f
或-F
标志。
$ ps -ef OR $ ps -eF

显示用户运行的进程
5.您可以选择所有由您拥有的进程(在此情况下为ps命令的运行者,即root),输入:
$ ps -x
6.要通过实际用户ID(RUID)或名称显示用户的进程,请使用-U
标志。
$ ps -fU tecmint OR $ ps -fu 1000

7.要通过有效用户ID(EUID)或名称选择用户的进程,请使用-u
选项。
$ ps -fu tecmint OR $ ps -fu 1000
打印以root身份运行的所有进程(真实和有效ID)
8.以下命令允许您以用户格式查看以root用户权限(真实和有效ID)运行的每个进程。
$ ps -U root -u root

显示组进程
9.如果您想列出某个组拥有的所有进程(真实组ID(RGID)或名称),请输入。
$ ps -fG apache OR $ ps -fG 48

10.要列出所有由有效组名(或会话)拥有的进程,请输入。
$ ps -fg apache
按PID和PPID显示进程
11.您可以按如下方式按PID列出进程。
$ ps -fp 1178

12.要按PPID选择进程,请输入。
$ ps -f --ppid 1154

13.使用PID列表进行选择。
$ ps -fp 2226,1154,1146

按TTY显示进程
14.要按tty选择进程,请使用如下-t标志。
$ ps -t pts/0 $ ps -t pts/1 $ ps -ft tty1

打印进程树
15.进程树显示系统上的进程如何相互关联;父进程被终止的进程将被 init(或 systemd)收养。
$ ps -e --forest

16.您也可以像这样为给定进程打印进程树。
$ ps -f --forest -C sshd OR $ ps -ef --forest | grep -v grep | grep sshd

打印进程线程
17.要打印进程的所有线程,请使用-L
标志,这将显示LWP(轻量级进程)以及NLWP(轻量级进程数量)列。
$ ps -fL -C httpd

指定自定义输出格式
使用-o或–format选项,ps 允许您构建如下所示的用户定义的输出格式。
18.要列出所有格式说明符,请包括L
标志。
$ ps L
19.以下命令允许您查看进程的PID、PPID、用户名和命令。
$ ps -eo pid,ppid,user,cmd

20.以下是另一个示例,显示了进程的文件系统组、优先级、启动时间和经过的时间的自定义输出格式。
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

21.通过PID查找进程名称。
$ ps -p 1154 -o comm=

显示父进程和子进程
22.要通过其名称选择特定进程,请使用-C标志,这也将显示其所有子进程。
$ ps -C sshd

23. 查找进程的所有实例的所有PID,在编写需要从标准输出或文件中读取PID的脚本时很有用。
$ ps -C httpd -o pid=

24. 检查进程的执行时间。
$ ps -eo comm,etime,user | grep httpd
下面的输出显示HTTPD服务已经运行了1小时48分钟17秒。

故障排除Linux系统性能
如果您的系统工作不正常,例如运行异常缓慢,您可以按照以下步骤进行一些系统故障排除。
26. 在Linux中按最高内存和CPU使用率查找最高运行进程
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head OR $ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

27. 杀死Linux进程/无响应应用程序或任何消耗高CPU时间的进程。
首先,找到无响应进程或应用程序的PID。
$ ps -A | grep -i stress
然后使用kill命令立即终止它。
$ kill -9 2583 2584

打印安全信息
28. 显示安全上下文(特别是针对SELinux)如下。
$ ps -eM OR $ ps --context

29.您还可以使用此命令以用户定义的格式显示安全信息。
$ ps -eo euser,ruser,suser,fuser,f,comm,label

使用Watch实用程序进行实时进程监控
30.最后,由于ps显示静态信息,您可以使用watch实用程序执行实时进程监控,重复输出,每秒显示一次,如下命令(指定自定义ps命令以实现您的目标)。
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

重要:ps仅显示静态信息,要查看频繁更新的输出,您可以使用诸如htop、top和glances等工具:最后两者实际上是Linux系统性能监控工具。
您可能还想阅读以下相关文章。
- 如何在Linux中使用PID号码查找进程名称
- 在Linux中按最高内存和CPU使用率查找顶部运行进程
- A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
- 如何在Linux中查找并终止运行进程
- 如何在终端中启动Linux命令并分离进程
现在就是这些。如果您有任何有用的ps命令示例要分享(不要忘记解释其作用),请在下面的评论表单中使用。
Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/