小知識(以ps為例):
查看命令路徑 which ps
命令協助 ps --help
命令完全手冊: man ps
說明
ps全稱是:Process Status (進程狀態),他就是提供進程資訊的。
ps命令用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程式。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和啟動並執行狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等,總之大部分資訊都是可以通過執行該命令得到的。
附知識說明
我們經常見到shell命令有三種類型的參數,最初我還琢磨 單劃線和雙劃線有什麼特殊的含義,原來是一個版本演變留下的問題。
linux系統中常見的3種命令列參數(以ps為例):
Unix類型的參數,前面有一短劃線 如:ps -e
BSD類型的參數,前面沒有短劃線 如:ps a
GNU長參數,前面有雙劃線 如:ps --deselect
所以,ps –a 和 ps a查詢結果會不同
常見執行個體
$ps
如圖:
解釋:預設情況,ps命令只顯示屬於目前使用者並正在當前終端中啟動並執行進程。預設ps的話,只運行了bash 和 ps
$ps –ef
如圖:
解釋:
UID 擁有進程的使用者
PID 進程的ID
PPID 父進程PID
C 進程存續期的處理利用率
STIME 進程啟動時的系統時間
TTY 進程所屬的終端
TIME 運行進程累計CPU時間
CMD 啟動進程的名稱
協助文檔
這回我用的是redhat的--help, 得到ps的help被分為五類:
simple selection 簡易選項
********* simple selection *********
-A all processes 所有線程
-N negate selection 忽略選擇
-a all w/ tty except session leaders 顯示一個終端的所有進程,除了會話引線
-d all except session leaders 顯示所有進程,但省略所有的會話引線(utility)
-e all processes
T all processes on this terminal
a all w/ tty, including other users
g OBSOLETE -- DO NOT USE
r only running processes
x processes w/o controlling ttys
selection by list 列表選項
********* selection by list *********
-C by command name
-G by real group ID (supports names)
-U by real user ID (supports names)
-g by session OR by effective group name
-p by process ID
-s processes in the sessions given
-t by tty
-u by effective user ID (supports names)
U processes for specified users
t by tty
output format 輸出格式化
*********** output format **********
-o,o user-defined 可以輸入自己的參數
-f full
-j,j job control
s signal
-O,O preloaded
-o v virtual memory
-l,l long
u user-oriented
-F extra full
X registers
long options 長操作類型
*********** long options ***********
--Group --User --pid --cols --ppid
--group --user --sid --rows --info
--cumulative --format --deselect
--sort --tty --forest --version
--heading --no-heading --context
misc options 其他選項
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
執行個體(來自man ps)
1. 查看系統每個進程的標準參數(To see every process on the system using standard syntax)
複製代碼 代碼如下:
$ps -e
$ps -ef
$ps -eF
$ps –ely
2. 查看系統每個進程的BSD(系統名)參數(To see every process on the system using BSD syntax)
複製代碼 代碼如下:
$ps ax
$ps axu
3. 列印進程樹(To print a process tree)
複製代碼 代碼如下:
$ps -ejH
$ps axjf
4. 列印線程的有關資訊
複製代碼 代碼如下:
$ps -eLf
$ps axms
5. 擷取安全資訊
複製代碼 代碼如下:
$ps -eo euser,ruser,suser,fuser,f,comm,label
$ps axZ
$ps –eM
6. 要查看每個進程運行在使用者根目錄(真實的和有效ID)格式
$ps -U root -u root u
7. 查看使用者自訂的格式(To see every process with a user-defined format)
複製代碼 代碼如下:
$ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
$ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
$ps -eopid,tt,user,fname,tmout,f,wchan
8. 僅僅列印系統日誌的進程ID(Print only the process IDs of syslogd)
$ps -C syslogd -o pid=
9. 僅僅列印pid=42的name(Print only the name of PID 42)
$ps -p 42 -o comm=
10. 實用 以(7)為例,按照自訂格式看cpu資訊
$ps -eo comm,pcpu | head
附: -0的參數目錄
參數 |
描述 |
pcpu |
CPU佔用率 |
pid |
進程ID |
ppid |
父進程ID |
pmem |
記憶體使用量率 |
comm |
可執行檔 |
cmd |
簡單命令(simple command) |
user |
啟動進程的使用者 |
nice |
優先順序(niceness) |
time |
累計的CPU時間 |
etime |
進程啟動後累計時間 |
tty |
當前終端進程 |
euid |
有效使用者ID |
stat |
進程狀態 |
ps文法
ps(選項)
ps選項
-a:顯示所有終端機下執行的程式,除了階段作業領導者之外。
a:顯示現行終端機下的所有程式,包括其他使用者的程式。
-A:顯示所有程式。
-c:顯示CLS和PRI欄位。
c:列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,選項或常駐服務的標示。
-C<指令名稱>:指定執行指令的名稱,並列出該指令的程式的狀況。
-d:顯示所有程式,但不包括階段作業領導者的程式。
-e:此選項的效果和指定"A"選項相同。
e:列出程式時,顯示每個程式所使用的環境變數。
-f:顯示UID,PPIP,C與STIME欄位。
f:用ASCII字元顯示樹狀結構,表達程式間的相互關係。
-g<群組名稱>:此選項的效果和指定"-G"選項相同,當亦能使用階段作業領導者的名稱來指定。
g:顯示現行終端機下的所有程式,包括群組領導者的程式。
-G<群組識別碼>:列出屬於該群組的程式的狀況,也可使用群組名稱來指定。
h:不顯示標題列。
-H:顯示樹狀結構,表示程式間的相互關係。
-j或j:採用工作控制的格式顯示程式狀況。
-l或l:採用詳細的格式來顯示程式狀況。
L:列出欄位的相關資訊。
-m或m:顯示所有的執行緒。
n:以數字來表示USER和WCHAN欄位。
-N:顯示所有的程式,除了執行ps指令終端機下的程式之外。
-p<程式識別碼>:指定程式識別碼,並列出該程式的狀況。
p<程式識別碼>:此選項的效果和指定"-p"選項相同,只在列表格式方面稍有差異。
r:只列出現行終端機正在執行中的程式。
-s<階段作業>:指定階段作業的程式識別碼,並列出隸屬該階段作業的程式的狀況。
s:採用程式訊號的格式顯示程式狀況。
S:列出程式時,包括已中止的子程式資料。
-t<終端機編號>:指定終端機編號,並列出屬於該終端機的程式的狀況。
t<終端機編號>:此選項的效果和指定"-t"選項相同,只在列表格式方面稍有差異。
-T:顯示現行終端機下的所有程式。
-u<使用者識別碼>:此選項的效果和指定"-U"選項相同。
u:以使用者為主的格式來顯示程式狀況。
-U<使用者識別碼>:列出屬於該使用者的程式的狀況,也可使用使用者名稱稱來指定。
U<使用者名稱稱>:列出屬於該使用者的程式的狀況。
v:採用虛擬記憶體的格式顯示程式狀況。
-V或V:顯示版本資訊。
-w或w:採用寬闊的格式來顯示程式狀況。
x:顯示所有程式,不以終端機來區分。
X:採用舊式的Linux i386登陸格式顯示程式狀況。
-y:配合選項"-l"使用時,不顯示F(flag)欄位,並以RSS欄位取代ADDR欄位 。
-<程式識別碼>:此選項的效果和指定"p"選項相同。
--cols<每列字元數>:設定每列的最大字元數。
--columns<每列字元數>:此選項的效果和指定"--cols"選項相同。
--cumulative:此選項的效果和指定"S"選項相同。
--deselect:此選項的效果和指定"-N"選項相同。
--forest:此選項的效果和指定"f"選項相同。
--headers:重複顯示標題列。
--help:線上協助。
--info:顯示排錯資訊。
--lines<顯示列數>:設定顯示畫面的列數。
--no-headers:此選項的效果和指定"h"選項相同,只在列表格式方面稍有差異。
--group<群組名稱>:此選項的效果和指定"-G"選項相同。
--Group<群組識別碼>:此選項的效果和指定"-G"選項相同。
--pid<程式識別碼>:此選項的效果和指定"-p"選項相同。
--rows<顯示列數>:此選項的效果和指定"--lines"選項相同。
--sid<階段作業>:此選項的效果和指定"-s"選項相同。
--tty<終端機編號>:此選項的效果和指定"-t"選項相同。
--user<使用者名稱稱>:此選項的效果和指定"-U"選項相同。
--User<使用者識別碼>:此選項的效果和指定"-U"選項相同。
--version:此選項的效果和指定"-V"選項相同。
--widty<每列字元數>:此選項的效果和指定"-cols"選項相同。
由於ps命令能夠支援的系統類別型相當的多,所以選項多的離譜!