Linux ps命令檢視程序狀態

2021-08-11 18:20:57 字數 3316 閱讀 5163

ps 命令是最常用的監控程序的命令,通過此命令可以檢視系統中所有執行程序的詳細資訊。

ps 命令的基本格式如下:

[root@localhost ~]# ps aux

#檢視系統中所有的程序,使用 bs 作業系統格式

[root@localhost ~]# ps -le

#檢視系統中所有的程序,使用 linux 標準命令格式

選項:

建議記憶幾個固定選項即可。比如:

有這三個命令就足夠了,下面分別來檢視。

【例 1】

[root@localhost ~]# ps aux

#檢視系統中所有的程序

user pid %cpu %mem vsz rss tty stat start time command

root 1 0.0 0.2 2872 1416 ? ss jun04 0:02 /sbin/init

root 2 0.0 0.0 0 0 ? s jun04 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? s jun04 0:00 [migration/0]

root 4 0.0 0.0 0 0 ? s jun04 0:00 [ksoftirqd/0]

…省略部分輸出…

表 1 中羅列出了以上輸出資訊中各列的具體含義。

表 1 ps命令輸出資訊含義 表頭

含義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

程序狀態。常見的狀態有以下幾種:

-d:不可被喚醒的睡眠狀態,通常用於 i/o 情況。

-r:該程序正在執行。

-s:該程序處於睡眠狀態,可被喚醒。

-t:停止狀態,可能是在後台暫停或程序處於除錯狀態。

-w:記憶體互動狀態(從 2.6 核心開始無效)。

-x:死掉的程序(應該不會出現)。

-z:殭屍程序。程序已經中止,但是部分程式還在記憶體當中。

-<:高優先順序(以下狀態在 bsd 格式中出現)。

-n:低優先順序。

-l:被鎖入記憶體。

-s:包含子程序。

-l:多執行緒(小寫 l)。

-+:位於後台。

start

該程序的啟動時間。

time

該程序占用 cpu 的運算時間,注意不是系統時間。

command

產生此程序的命令名。

【例 2】"ps aux"命令可以看到系統中所有的程序,"ps -le"命令也能看到系統中所有的程序。由於 "-l" 選項的作用,所以 "ps -le" 命令能夠看到更加詳細的資訊,比如父程序的 pid、優先順序等。但是這兩個命令的基本作用是一致的,掌握其中乙個就足夠了

[root@localhost ~]# ps -le

f s uid pid ppid c pri nl addr sz wchan tty time cmd

4 s 0 1 0 0 80 0 - 718 - ? 00:00:02 init

1 s 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd

1 s 0 3 2 0 -40 - - 0 - ? 00:00:00 migration/0

1 s 0 4 2 0 80 0 - 0 - ? 00:00:00 ksoflirqd/0

1 s 0 5 2 0 -40 - - 0 - ? 00:00:00 migration/0

…省略部分輸出…

表 2 羅列出以上輸出資訊中各列的含義。

表 2 ps -le 命令輸出資訊

表頭 含義 f 程序標誌,說明程序的許可權,常見的標誌有兩個:

s 程序狀態。具體的狀態和"psaux"命令中的 stat 狀態一致; uid 執行此程序的使用者的 id; pid 程序的 id; ppid 父程序的 id; c 該程序的 cpu 使用率,單位是百分比; pri 程序的優先順序,數值越小,該程序的優先順序越高,越早被 cpu 執行; ni 程序的優先順序,數值越小,該程序越早被執行; addr 該程序在記憶體的哪個位置; sz 該程序占用多大記憶體; wchan 該程序是否執行。"-"代表正在執行; tty 該程序由哪個終端產生; time 該程序占用 cpu 的運算時間,注意不是系統時間; cmd 產生此程序的命令名;

【例 3】如果不想看到所有的程序,只想檢視一下當前登入產生了哪些程序,那只需使用 "ps -l" 命令就足夠了:

[root@localhost ~]# ps -l

#檢視當前登入產生的程序

f s uid pid ppid c pri ni addr sz wchan tty time cmd

4 s 0 18618 18614 0 80 0 - 1681 - pts/1 00:00:00 bash

4 r 0 18683 18618 4 80 0 - 1619 - pts/1 00:00:00 ps

可以看到,這次從 pts/1 虛擬終端登入,只產生了兩個程序:乙個是登入之後生成的 shell,也就是 bash;另乙個是正在執行的 ps 命令。

再來說說殭屍程序。殭屍程序的產生一般是由於程序非正常停止或程式編寫錯誤,導致子程序先於父程序結束,而父程序又沒有正確地**子程序,從而造成子程序一直存在於記憶體當中,這就是殭屍程序。

殭屍程序會對主機的穩定性產生影響,所以,在產生殭屍程序後,一定要對產生殭屍程序的軟體進行優化,避免一直產生殭屍程序;對於已經產生的殭屍程序,可以在查詢出來之後強制中止。

linux ps 檢視程序狀態

ps 引數 linux中的ps命令是process status的縮寫。ps命令用來列出系統中當前執行的那些程序。ps命令列出的是當前那些程序的快照,就是執行ps命令的那個時刻的那些程序,如果想要動態的顯示程序資訊,就可以使用top命令。要對程序進行監測和控制,首先必須要了解當前程序的情況,也就是需...

Linux ps命令及程序狀態簡介

檢視程序狀態 在linux常用以下兩個命令檢視程序狀態 ps ef ps aux這兩個命令都可以列出所有程序及其狀態,具體各命令的含義可以參考man手冊。下文以使用ps aux為例,會列出user pid cpu mem vsz rss tty stat start time command各列。本...

Linux ps程序狀態碼

d 不可中斷睡眠 通常程序在進行i o r 執行中或者可執行狀態 在執行佇列中 s 可中斷睡眠 等待event,程序idle中 t 程序停止 程序被trace或者程序被訊號停止 x 程序死亡 應該永不可見 z 殭屍程序 結束,但是父程序沒有wait該子程序 對於bsd格式,狀態碼可以附加額外的字元 ...