30個對於Linux進程監控有用的‘ps命令’示例

psprocesses status)是一個用於查看系統上運行進程信息的本機Unix/Linux實用程序:它從/proc文件系統中讀取這些信息。它是系統管理中的重要實用程序之一,專門用於進程監控,幫助您了解Linux系統中正在進行的工作。

它有許多選項可以操縱其輸出,但是,您會發現其中少數對於日常使用實際上是有用的。

閱讀更多關於Linux進程的全部知識[全面指南]

在本文中,我們將查看ps命令的30個有用示例,用於監控Linux系統上正在運行的活動進程。

請注意,ps生成帶有標題行的輸出,該行代表信息每列的含義,您可以在ps man頁面上找到所有標籤的含義。

列出當前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. 尋找所有進程的所有實例的PIDs,在編寫需要從標準輸出或文件中讀取PIDs的腳本時很有用。

$ 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/