一天一個shell命令 linux好管家-進程-ps命令詳解_linux shell

來源:互聯網
上載者:User

小知識(以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命令能夠支援的系統類別型相當的多,所以選項多的離譜!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.