Linux进程监控的30个有用的’ps命令’示例

ps(进程状态)是一个用于查看系统上一系列正在运行的进程信息的原生 Unix/Linux 实用程序:它从 /proc 文件系统中的虚拟文件中读取这些信息。它是系统管理中的重要工具之一,特别是在进程监视方面,可以帮助您了解 Linux 系统中正在发生的情况。

它有许多选项可用于操作其输出,但实际上您会发现其中一小部分在日常使用中非常有用。

阅读更多有关 Linux 中进程的所有信息 [全面指南]

在本文中,我们将介绍 ps 命令的 30 个有用示例,用于监视 Linux 系统上正在运行的活动进程。

请注意,ps 生成带有标题行的输出,该行表示每列信息的含义,您可以在 ps 手册页中找到所有标签的含义。

列出当前 Shell 中的所有进程

1. 如果不带任何参数运行 ps 命令,它会显示当前 Shell 的进程。

$ ps 
List Current Running Processes

以不同格式打印所有进程

2. 以通用(Unix/Linux)格式显示 Linux 系统上的每个活动进程。

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3.BSD 格式显示所有进程。

$ ps au
OR
$ ps axu
List Processes in BSD Format

4.要执行完整格式的列表,请添加-f-F标志。

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

显示用户运行的进程

5.您可以选择所有由您拥有的进程(在此情况下为ps命令的运行者,即root),输入:

$ ps -x 

6.要通过实际用户ID(RUID)或名称显示用户的进程,请使用-U标志。

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7.要通过有效用户IDEUID)或名称选择用户的进程,请使用-u选项。

$ ps -fu tecmint
OR
$ ps -fu 1000

打印以root身份运行的所有进程(真实和有效ID)

8.以下命令允许您以用户格式查看以root用户权限(真实和有效ID)运行的每个进程。

$ ps -U root -u root 
Display Root User Running Processes

显示组进程

9.如果您想列出某个组拥有的所有进程(真实组ID(RGID)或名称),请输入。

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10.要列出所有由有效组名(或会话)拥有的进程,请输入。

$ ps -fg apache

按PID和PPID显示进程

11.您可以按如下方式按PID列出进程。

$ ps -fp 1178
List Processes by PID

12.要按PPID选择进程,请输入。

$ ps -f --ppid 1154
List Process by PPID

13.使用PID列表进行选择。

$ ps -fp 2226,1154,1146
List Processes by PIDs

按TTY显示进程

14.要按tty选择进程,请使用如下-t标志。

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

打印进程树

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

$ ps -e --forest 
List Process Tree

16.您也可以像这样为给定进程打印进程树。

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

打印进程线程

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

$ ps -fL -C httpd
List Process Threads

指定自定义输出格式

使用-o–format选项,ps 允许您构建如下所示的用户定义的输出格式。

18.要列出所有格式说明符,请包括L标志。

$ ps L

19.以下命令允许您查看进程的PIDPPID、用户名和命令。

$ ps -eo pid,ppid,user,cmd
List Processes with Names

20.以下是另一个示例,显示了进程的文件系统组、优先级、启动时间和经过的时间的自定义输出格式。

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21.通过PID查找进程名称。

$ ps -p 1154 -o comm=
Find Process using PID

显示父进程和子进程

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

$ ps -C sshd
Find Parent-Child Process

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

$ ps -C httpd -o pid=
Find All Process PIDs

24. 检查进程的执行时间。

$ ps -eo comm,etime,user | grep httpd

下面的输出显示HTTPD服务已经运行了1小时48分钟17秒。

Find Process Uptime

故障排除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
Find Top Running Processes

27. 杀死Linux进程/无响应应用程序或任何消耗高CPU时间的进程。

首先,找到无响应进程或应用程序的PID

$ ps -A | grep -i stress

然后使用kill命令立即终止它。

$ kill -9 2583 2584
Find and Kill a Process

打印安全信息

28. 显示安全上下文(特别是针对SELinux)如下。

$ ps -eM
OR
$ ps --context
Find SELinux Context

29.您还可以使用此命令以用户定义的格式显示安全信息。

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

使用Watch实用程序进行实时进程监控

30.最后,由于ps显示静态信息,您可以使用watch实用程序执行实时进程监控,重复输出,每秒显示一次,如下命令(指定自定义ps命令以实现您的目标)。

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real-Time Process Monitoring

重要:ps仅显示静态信息,要查看频繁更新的输出,您可以使用诸如htoptopglances等工具:最后两者实际上是Linux系统性能监控工具。

您可能还想阅读以下相关文章。

  1. 如何在Linux中使用PID号码查找进程名称
  2. 在Linux中按最高内存和CPU使用率查找顶部运行进程
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. 如何在Linux中查找并终止运行进程
  5. 如何在终端中启动Linux命令并分离进程

现在就是这些。如果您有任何有用的ps命令示例要分享(不要忘记解释其作用),请在下面的评论表单中使用。

Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/