30 个有用的 Linux 进程监控“ps 命令”示例
ps(进程状态)是 Unix/Linux 原生实用程序,用于查看系统中正在运行的进程信息:它从/proc 文件系统中的虚拟文件中读取这些信息。它是系统管理的重要实用程序之一,特别是在进程监控下,可帮助您了解 Linux 系统中正在发生的事情。
它具有多种操纵输出的选项,但是,您会发现其中少数选项对于日常使用实际上很有用。
另请阅读:你需要了解的有关 Linux 进程的所有信息 [综合指南]
在本文中,我们将介绍 30 个有用的 ps 命令示例,用于监视 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 example OR $ ps -fu 1000
7.要按有效用户ID ( EUID ) 或名称选择用户的进程,请使用该-u
选项。
$ ps -fu example OR $ ps -fu 1000
打印以 Root 身份运行的所有进程(真实 ID 和有效 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.下面是自定义输出格式的另一个示例,显示文件系统组、nice 值、启动时间和进程的耗时。
$ 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 Utility 执行实时进程监控
30.最后,由于ps显示静态信息,您可以使用watch 实用程序执行实时进程监控,并重复输出,每秒显示一次,如下面的命令所示(指定自定义ps 命令来实现您的目标)。
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
重要提示: ps 仅显示静态信息,要查看经常更新的输出,您可以使用htop等工具;top和gazels:后两个实际上是 Linux 系统性能监控工具。
您可能还想阅读以下相关文章。
- 如何在 Linux 中使用 PID 号查找进程名称
- 在 Linux 中查找内存和 CPU 使用率最高的运行进程
- 在 Linux 中终止进程的 Kill、Pkill 和 Killall 命令指南
- 如何在 Linux 中查找并终止正在运行的进程
- 如何在后台启动 Linux 命令并在终端中分离进程
目前就这些了。如果您有任何有用的ps 命令示例要分享(别忘了解释它的作用),请使用下面的评论表。