最全的Linux進程監視命令ps的30個常用例子

Linux PSP BSD UNIX 灰色的烏鴉 灰色的烏鴉 2017-09-24

ps命令是Unix/Linux內建的實用程序,用它能查看當前系統正在運行的進程的相關信息。

ps命令從/proc文件系統中的虛擬文件中讀取相關信息,它是系統管理中最重要的功能,特別是在進程監控方面,它能幫助你瞭解Linux系統當前正發生了什麼。

ps命令具有操作其輸出的眾多參數,但在我們的日常管理中只會用到其中很小的部分。

在這篇教程中,我們將用30個常用例子來列舉ps命令對Linux進程的監視。

一、列出當前Shell中的所有進程

1. 如果您運行ps命令沒有帶任何參數,它將顯示當前shell的所有進程。

$ ps

最全的Linux進程監視命令ps的30個常用例子

List Current Running Processes

二、以不同的風格顯示所有進程

ps命令帶有2種不一樣的風格,分別是BSD和UNIX。新用戶經常會混淆和錯誤地解釋這兩種風格。所以要弄清楚他們,繼續操作之前這裡是一些基本的信息。

注意:"ps aux"和"ps -aux"不相同。例如"-u"用來顯示該用戶的進程。但是"u"則是顯示詳細的信息。

2. UNIX/LINUX的風格:在linux風格的語法選項前面有一個破折號“-”如下:

$ ps -A

OR

$ ps -e

List Current Running Processes

二、以不同的風格顯示所有進程

ps命令帶有2種不一樣的風格,分別是BSD和UNIX。新用戶經常會混淆和錯誤地解釋這兩種風格。所以要弄清楚他們,繼續操作之前這裡是一些基本的信息。

注意:"ps aux"和"ps -aux"不相同。例如"-u"用來顯示該用戶的進程。但是"u"則是顯示詳細的信息。

2. UNIX/LINUX的風格:在linux風格的語法選項前面有一個破折號“-”如下:

$ ps -A

OR

$ ps -e

最全的Linux進程監視命令ps的30個常用例子

List Processes in Standard Format

3. BSD風格:在BSD風格的語法選項前不帶連字符,如下:

$ ps au

OR

$ ps axu

最全的Linux進程監視命令ps的30個常用例子

List Processes in BSD Format

4. 要以全格式列表顯示所有進程,請添加-f或-F標誌。

$ ps -ef

OR

$ ps -eF

最全的Linux進程監視命令ps的30個常用例子

List Processes in Long List Format

三、顯示用戶運行進程

5. 你可以查詢你擁有的所有進程(運行ps命令的權限,在本例中為root),輸入:

$ ps -x

6. 使用-U參數顯示指定用戶名(RUID)或用戶ID的進程:

$ ps -fU servicelabs

OR

$ ps -fu 1001

最全的Linux進程監視命令ps的30個常用例子

List User Processes by ID

7. 使用-u參數顯示指定用戶名(EUID)或用戶ID的進程:

$ ps -fu tecmint

OR

$ ps -fu 1000

四、顯示作為根用戶運行的所有進程

8. 以下命令允許您以用戶格式查看以root用戶權限(實際和有效ID)運行的每個進程:

$ ps -U root -u root

Display Root User Running Processes

五、顯示組進程

9. 如果要列出某個組擁有的所有進程(實際組ID(RGID)或名稱)),請輸入:

$ ps -fG www-data

OR

$ ps -fG 33

List User Processes by ID

7. 使用-u參數顯示指定用戶名(EUID)或用戶ID的進程:

$ ps -fu tecmint

OR

$ ps -fu 1000

四、顯示作為根用戶運行的所有進程

8. 以下命令允許您以用戶格式查看以root用戶權限(實際和有效ID)運行的每個進程:

$ ps -U root -u root

Display Root User Running Processes

五、顯示組進程

9. 如果要列出某個組擁有的所有進程(實際組ID(RGID)或名稱)),請輸入:

$ ps -fG www-data

OR

$ ps -fG 33

最全的Linux進程監視命令ps的30個常用例子

Display Group Processes

10. 如果要列出有效組名稱(或會話)所擁有的所有進程,請輸入:

$ ps -fg www-data

六、通過PID和PPID顯示進程

11. 你可以通過進程ID來顯示所屬的進程,如下顯示進程ID為1178的進程:

$ ps -fp 1239

最全的Linux進程監視命令ps的30個常用例子

List Processes by PID

12. 以父進程ID來顯示其下所有的進程,如顯示父進程為1154的所有進程:

$ ps -f --ppid 1244

最全的Linux進程監視命令ps的30個常用例子

List Process by PPID

13. 顯示指定PID的多個進程:

$ ps -fp 1204,1239,1263

List Process by PPID

13. 顯示指定PID的多個進程:

$ ps -fp 1204,1239,1263

最全的Linux進程監視命令ps的30個常用例子

List Processes by PIDs

七、通過所屬TTY來顯示進程

14. 要按tty顯示所屬進程,可使用-t參數,如下所示。

$ ps -t pst/0

$ ps -t pst/1

$ ps -ft tty1

最全的Linux進程監視命令ps的30個常用例子

List Processes by TTY

八、樹形顯示進程

15. 以進程樹顯示系統中的進程如何相互鏈接。

$ ps -e --forest

最全的Linux進程監視命令ps的30個常用例子

List Process Tree

16. 以進程樹顯示指定的進程

$ ps -f --forest -C sshd

OR

$ ps -ef --forest | grep -v grep | grep sshd

最全的Linux進程監視命令ps的30個常用例子

List Tree View of Process

九、根據線程來顯示進程

17. 要顯示一個進程的所有線程,請使用-H參數,這將顯示LWP(輕量級進程)以及NLWP(輕量級進程數)列。

$ ps -fL -C nginx

最全的Linux進程監視命令ps的30個常用例子

List Process Threads

十、指定自定義輸出格式

使用-o或-format選項,ps允許您構建用戶定義的輸出格式,如下所示:

18. 要列出所有格式說明符,請包括L標誌。

$ ps L

19. 以下命令允許您查看進程的PID,PPID,用戶名和命令:

$ ps -eo pid,ppid,user,cmd

最全的Linux進程監視命令ps的30個常用例子

List Processes with Names

20. 下面是一個自定義輸出格式的示例,顯示文件系統組,ni值,開始時間和進程的時間:

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

最全的Linux進程監視命令ps的30個常用例子

List Process ID Information

21. 使用其PID查找進程名稱:

$ ps -p 1244 -o comm=

最全的Linux進程監視命令ps的30個常用例子

Find Process using PID

十一、顯示父進程和子進程

22. 要以其名稱選擇特定進程,請使用-C參數,這也將顯示其所有子進程。

$ ps -C sshd

最全的Linux進程監視命令ps的30個常用例子

Find Parent Child Process

23. 查找指定進程名所有的所屬PID,在編寫需要從std輸出或文件讀取PID的腳本時這個參數很有用,如下列:

$ ps -C nginx -o pid=

最全的Linux進程監視命令ps的30個常用例子

Find All Process PIDs

24. 檢查一個進程的執行時間。

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

以下輸出顯示nginx服務已運行45分37秒:

最全的Linux進程監視命令ps的30個常用例子

Find Process Uptime

十二、Linux系統性能和故障排除

如果你的系統不能正常工作,例如,如果速度異常慢,你可以執行以下命令來排除系統故障:

26. 查找佔用最多內存和CPU的進程

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

OR

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

最全的Linux進程監視命令ps的30個常用例子

Find Top Running Processes

27. 終結耗費高CPU時間或者沒有反應的進程:

首先,找到無響應的進程或進程的PID。

$ ps -A | grep -i stress

然後用kill命令立刻終結指定的PID:

$ kill -9 1244 1246 1247 1248 1249

最全的Linux進程監視命令ps的30個常用例子

Find and Kill a Process

十三、顯示安全信息

28. 顯示安全信息:

$ ps -eM

OR

$ ps --context

最全的Linux進程監視命令ps的30個常用例子

Find SELinux Context

29. 你也可以使用以下命令以用戶定義的格式顯示安全信息。

$ ps -eo euser,ruser,suser,fuser,f,comm,label

最全的Linux進程監視命令ps的30個常用例子

List SELinux Context by Users

十四、使用Watch應用程序對進程實時監控

30. 最後,因為ps顯示的是靜態的信息,你可以使用watch實用程序執行重複的輸出以實現對就程進行實時的監視,如下面的命令顯示每秒鐘的監視:

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

最全的Linux進程監視命令ps的30個常用例子

Real Time Process Monitoring

相關推薦

推薦中...