1. 程式人生 > 其它 >『學了就忘』Linux系統管理 — 82、Linux中程序的檢視(ps命令)

『學了就忘』Linux系統管理 — 82、Linux中程序的檢視(ps命令)

目錄

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:顯示程序的所屬使用者。

示例: