Linux ps 命令


簡介

ps 命令是 Linux 中一個廣泛使用的實用程式,它提供當前程序及其狀態的快照。它有助於監控正在執行的程序,識別程序 ID(PID)、終端型別(TTY)、CPU 時間使用情況、命令名稱、使用者 ID 及其他資訊。本文全面概述了 ps 命令在現實生活中的各種用例。

ps 命令的語法

ps 命令的基本語法如下所示:

$ ps [OPTIONS]

ps 命令支援三種不同的語法風格:Unix、BSDGNU。Unix 風格的語法可以包裝並在前面加上連字元,BSD 可以包裝但不能在前面加上連字元,而 GNU 語法使用長選項並在前面加上雙連字元。

ps 命令選項

以下是與 ps 命令一起使用的一些開關:

  • ps -ef 或 ps -aux - 以完整格式列出當前正在執行的程序

  • ps -ax - 列出當前正在執行的程序

  • ps -u <使用者名稱> - 列出特定使用者的程序

  • ps -C <命令> - 列出給定命令的程序

  • ps -p <PID> - 列出具有給定PID 的程序

  • ps -ppid <PPID> - 列出具有給定父程序 ID(PPID)的程序

  • pstree - 以層次結構顯示程序

  • ps -L - 列出特定程序的所有執行緒

  • ps --sort pmem - 查詢記憶體洩漏

  • ps -eo - 顯示安全資訊

  • ps -U root -u root u - 顯示由 root 執行的程序

ps 命令的用例

讓我們看看ps 命令在現實生活中的用例,這對系統管理員很有幫助。

列出所有正在執行的程序

要檢視系統上當前正在執行的所有程序,請使用以下命令:

$ ps -ef
UID    	PID  PPID  C  STIME  TTY     TIME     CMD
root      1 	0    0  Jan31   ?    00:00:00  /sbin/init splash
root      2 	0    0  Jan31   ?    00:00:00  [kthreadd]
root      3 	2    0  Jan31   ?    00:00:00  [rcu_gp]
root      4 	2    0  Jan31   ?    00:00:00  [rcu_par_gp]
root      5 	2    0  Jan31   ?    00:00:00  [kworker/0:0-events]
...

在以上輸出中,PID 表示正在執行的命令的程序 ID,TTY 是正在執行當前命令的終端型別,TIME 是 CPU 執行該程序所需的時間,CMD 是當前命令。

按 CPU 或記憶體使用情況過濾列出所有正在執行的程序

要檢視按CPU 或記憶體使用情況過濾的所有當前正在執行的程序,請使用以下命令:

$ pd-aux
USER   	 PID   %CPU  %MEM   VSZ   RSS   TTY  STAT  START   TIME  COMMAND
root      1    0.0   0.0   19404  3116   ?    Ss    Jan31   0:00  /sbin/init splash
root      2    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [kthreadd]
root      3    0.0   0.0     0 	   0     ?    R	   Jan31   0:00  [rcu_gp]
root      4    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [rcu_par_gp]
root      5    0.0   0.0     0 	   0     ?    S	   Jan31   0:00  [kworker/0:0-events]
...

在以上輸出中,%CPU 顯示程序當前的CPU 使用率,%MEM 顯示程序的記憶體使用率,VSZ 是虛擬記憶體的大小,RSS 是駐留池的大小。

列出特定使用者的程序

要檢視特定使用者正在執行的所有程序,請使用以下命令:

$ ps -u <username>

例如,要檢視root 使用者的所有程序,請使用以下命令:

$ ps -u root
USER   	PID  %CPU   %MEM    VSZ   RSS   TTY    STAT  START   TIME  COMMAND
root     1    0.0   0.0    19404  3116   ?    	Ss   Jan31   0:00  /sbin/init splash
root     2    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [kthreadd]
root     3    0.0   0.0      0 	    0    ?    	R    Jan31   0:00  [rcu_gp]
root     4    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [rcu_par_gp]
root     5    0.0   0.0      0 	    0    ?    	S    Jan31   0:00  [kworker/0:0-events]
...

特定命令的程序列表

要檢視特定命令正在執行的所有程序,請使用以下命令:

$ ps -C <command>

例如,要檢視python 命令的所有正在執行的程序,請使用以下命令:

$ ps -C python
USER   	PID  %CPU  %MEM	  VSZ   RSS   TTY   STAT   START   TIME  COMMAND
root   	123   0.0   1.2  95768  23844  ?     S	   12:00   0:05  python
user1  	456   0.2   0.9  95768  23844  ?     S	   13:00   0:03  python
...

列出具有給定 PID 的程序

要檢視具有給定PID 的程序,請使用以下命令:

$ ps -p <PID>

例如,要檢視PID 123 的程序,請使用以下命令:

$ ps -p 123
USER   	PID  %CPU  %MEM	  VSZ    RSS  TTY   STAT   START   TIME  COMMAND
root   	123   0.0   1.2  95768  23844  ?     S	   12:00   0:05  python

結論

ps 命令是管理 Linux 上程序的極其強大的工具。無論您是想監控特定程序、查詢佔用過多記憶體或 CPU 的程序,還是監控系統上執行的所有程序,ps 命令都能提供您所需的資訊。對於任何 Linux 管理員或高階使用者來說,它都是必不可少的工具。

更新於: 2023年4月19日

9K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.