ps(processes status)是一個用於查看系統上運行進程信息的本機Unix/Linux實用程序:它從/proc文件系統中讀取這些信息。它是系統管理中的重要實用程序之一,專門用於進程監控,幫助您了解Linux系統中正在進行的工作。
它有許多選項可以操縱其輸出,但是,您會發現其中少數對於日常使用實際上是有用的。
閱讀更多:關於Linux進程的全部知識[全面指南]
在本文中,我們將查看ps命令的30個有用示例,用於監控Linux系統上正在運行的活動進程。
請注意,ps生成帶有標題行的輸出,該行代表信息每列的含義,您可以在ps man頁面上找到所有標籤的含義。
列出當前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. 尋找所有進程的所有實例的PIDs,在編寫需要從標準輸出或文件中讀取PIDs的腳本時很有用。
$ 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/