『學了就忘』Linux系統管理 — 82、Linux中程序的檢視(ps命令)
阿新 • • 發佈:2021-12-15
目錄
1、ps命令介紹
ps
命令是用來靜態顯示系統中程序的命令。
不過這個命令有些特殊,它部分命令的選項前不能加-
,比如命令ps aux
,其中aux
是選項,但是這個選項前不能加-
。
這是因為ps
命令的部分選項需要遵守BSD作業系統的格式,所以ps
命令的常用選項的組合是固定的。
命令如下:
# 檢視系統中所有程序,使用BSD作業系統格式。 # aux選項組合是一個習慣用法。 [root@localhost ~]# ps aux # 檢視系統中所有程序,使用Linux標準命令格式。 [root@localhost ~]# ps -le 常用選項: а:顯示終端上的所有程序,包括其他使用者的程序。 u:以使用者為主的格式來顯示程式狀況。 x:顯示所有程式,不以終端機來區分。 -l:長格式顯示。顯示更加詳細的資訊。 -е:顯示所有程序,和-A作用一致 -h:不顯示標題。 -f:全格式。 -w:寬輸出。
2、ps aux命令示例
示例:檢視系統中所有正在執行的程序。
[root@localhost ~]# ps -aux Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19344 1548 ? Ss 08:41 0:02 /sbin/init root 2 0.0 0.0 0 0 ? S 08:41 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 08:41 0:00 [migration/0] ...省略...
如果aux
選項前面加了一個-
,就會出現一個行警告:
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
提示你有語法錯誤,多了一個-
。
但是之後顯示的Linux系統程序的結果是正確的。
我們把aux
選項前面的-
去掉就可以了,如下:
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19344 1548 ? Ss 08:41 0:02 /sbin/init root 2 0.0 0.0 0 0 ? S 08:41 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 08:41 0:00 [migration/0] ...省略...
ps aux
命令輸出項解釋:
USER
:該程序是由哪個使用者產生的。PID
:程序的ID號。%CPU
:該程序佔用CPU資源的百分比,佔用越高,程序越耗費資源。%MEM
:該程序佔用實體記憶體的百分比,佔用越高,程序越耗費資源。VSZ
:該程序佔用虛擬記憶體的大小,單位KB。RSS
:該程序佔用實際實體記憶體的大小,單位KB。TTY
:該程序是在哪個終端中執行的。
其中tty1-tty7
代表本地控制檯終端(可以通過alt+F1-F7
鍵切換不同的終端),tty1-tty6
是本地的字元介面終端,tty7
是圖形終端。
pts/0-255
代表虛擬終端,一般是遠端連線的終端,第一個遠端連線佔用的是pts/0
終端,第二個遠端連線佔用pts/1
,依次增長。STAT
:程序狀態。(點選連結,可檢視文章中的程序狀態介紹。https://www.cnblogs.com/liuyuelinfighting/p/15692465.html)START
:該程序的啟動時間。TIME
:該程序佔用CPU的運算時間,注意不是系統時間,時間越長證明該程序越耗資源。COMMAND
:產生此程序的命令名。
提示:
Linux系統中,使用者的名稱,檔案的名稱,包括程序的名稱等,都是給使用者看的。
Linux系統查詢的時候,還是根據ID資訊來進行查詢。
說明:
我們可以看到
ps aux
命令的執行結果中,TTY輸出項有的是?
,其實這些都是由Linux系統核心直接產生的程序,不需要終端來呼叫,也就沒有執行終端的資訊。
3、ps -le命令示例
示例:檢視系統中所有正在執行的程序。
[root@localhost ~]# ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 4836 poll_s ? 00:00:02 init
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0
...省略...
ps -le
命令輸出項解釋:
F
:程序標誌,說明程序的許可權。
常見的標誌有:
1:程序可以複製,但是不能執行。
4:程序使用超級使用者許可權。S
:程序狀態。具體的狀態和ps aux
命令中STAT狀態一致。UID
:程序是哪個UID使用者呼叫執行的。PID
:程序的ID號。PPID
:父程序的ID號。C
:該程序的CPU使用率,單位是百分比。PRI
:程序的優先順序,數值越小該程序優先順序越高,越快被CPU執行。NI
:程序的優先順序,也是數值越小越早被執行。ADDR
:該程序在記憶體的哪個位置。SZ
:該程序佔用多大記憶體。WCHAN
:該程序是否執行。-
代表正在執行。TTY
:該程序由哪個終端產生的。TIME
:該程序佔用CPU的運算時間,注意不是系統時間。CMD
:產生此程序的命令名(縮寫)。
說明:
ps aux
命令和ps -le
命令,兩個命令都是靜態檢視Linux系統所有正在執行的程序。具體用哪個命令,看自己的習慣。我比較習慣用
ps aux
命令檢視Linux系統程序。如果要看產生此程序的命令名的全程,就需要用
ps aux
命令,有的時候會比較方便。
4、pstree命令
可以檢視到程序之間依賴關係的,一個程序會依賴哪些程序。
pstree
命令也是檢視Linux系統中程序的命令,是以樹型關係方式展示的。
[root@localhost ~]# pstree [選項]
選項:
-p:顯示程序的PID。
-u:顯示程序的所屬使用者。
示例: