閱讀962 返回首頁    go 阿裏雲 go 技術社區[雲棲]


linux常用命令之ps(詳細參數講解)

不論是windows係統還是linux係統,在係統運行時,都會有程序隨之運行,我們將這個程序稱之為進程(process)。

windows可以直接用任務管理器查看,那麼linux是如何查看係統進程的呢?

想要在linux中查看這些進程,就需要熟悉ps命令的用法,它能輸出運行在係統上的所有程序的信息,但是ps的參數很多,而且大多數參數是不常用的,一般我們用到的就是那麼幾種而已。

ps選項三種風格

1 、UNIX options, which may be grouped and must be preceded by a dash.UNIX風格,必須帶一個“-”使用
2、 BSD options, which may be grouped and must not be used with a dash.BSD風格,不帶“-”使用
3、 GNU long options, which are preceded by two dashes.GNU風格,必須帶“--”

Unix風格的參數

最早由KenThompson、Dennis Ritchie和Douglas McIlroy於1969年在美國電話電報公司(AT&T)的貝爾實驗室開發,從Unix係統上原有的ps命令繼承下來的(想了解更多就去百科看看)

Unix風格的ps命令參數及描述

-A all processes 顯示所有的進程

-N negate selection 顯示與指定參數不符的進程

-a all w/ tty except session leaders 顯示除控製進程和無終端進程外的所有進程

-d all except session leaders 顯示除控製進程外的所有進程

-e all processes 顯示所有的進程

-C cmdlist by command name 顯示包含在cmdlist列表中的進程

-G grouplist by real group ID (supports names) 顯示組ID在grouplist列表中的進程

-U userlist by real user ID (supports names) 顯示屬主的用戶ID在userlist列表中的進程

-g grouplist by session OR by effective group name 顯示組ID在grouplist列表中的進程

-p pid by process ID 顯示PID在pid列表中的進程

-q by process ID (unsorted & quick)

-s sessionlist processes in the sessions given 顯示會話ID在sessionlist列表中的進程

-t ttylist by tty 顯示終端ID在ttylist列表中的進程

-u userlist by effective user ID (supports names) 顯示有效用戶ID在userlist列表中的進程

-o,o fotmat user-defined 僅顯示由format指定的列

-j,j job control 顯示任務信息

-O,O preloaded -o 顯示默認的輸出列

-l,l long 顯示長列表

-F extra full 顯示更多額外輸出(相對於-f參數而言)

-f full 顯示完整格式的信息

-V,V show version 顯示ps的版本信息

-m,m,-L,-T,H threads 顯示所有的執行緒

-M,Z security data 顯示進程的安全信息

-w,w wide output 帶寬輸出模式,不限寬度顯示

-y change -l format 配合-l使用

-c scheduling class 顯示進程的額外調度信息

-H process hierarchy 用層級格式來顯示進程

其實說了這麼多的參數,一般情況下都用不到的,常用ps -ef

字段解釋:

UID 啟用這個進程的用戶
PID 進程ID
PPID 父進程ID
C CPU占用率
STIME 進程啟動時的係統時間
TTY 開始此進程的終端
TIME 此進程運行的總時間
CMD 啟動的程序名稱
F:內核分配給進程的係統標記
S:進程的狀態(O表示正在運行;S代表正在休眠;R代表運行態;Z代表僵死態;T代表停止)
PRI:進程的優先級
NI:用來參與決定優先級
ADDR:進程的內存地址
SZ:所需交換空間的大致大小
WCHAN:進程休眠的內核函數地址

BSD風格的參數

伯克利軟件發行版(Berkeley software distribution,BSD)是加州大學伯克利分校開發的一個Unix版本。它和Unix係統有許多細小的不同。

BSD風格的ps命令參數及描述

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 所有與終端無關的進程

U userlist processes for specified users 顯示歸userlist列表中某用戶ID所有的進程

t by tty 跟-t選項相同

s signal 采用信號格式顯示

v virtual memory 采用虛擬內存格式顯示

u user-oriented 以用戶為中心組織進程狀態信息顯示(顯示進程所有者的信息)

X registers 按i386寄存器格式顯示

L list format codes 列出所有格式指定符

S children in sum 列出程序時,包括已中斷的子程序

c true command name 顯示真實用以啟動進程的程序名稱

n numeric WCHAN,UID 和WCHAN信息一起顯示出來,用數值表示用戶ID和組ID

f ASCII art forest 用ASCII字符顯示樹狀結構,表達程序間的相互關係

Unix和BSD的參數有很多重複的地方,用不到的參數很多,常用ps aux

字段解釋:

USER:啟動進程的用戶
PID:進程號
%CPU:占用的CPU使用率
%MEM:內存空間占整個內存的比率
VSZ:占用的虛擬內存集,就是占用的虛擬內存大小
RSS:常駐內存集Resident Size,就是占用的固定的內存大小
TTY:終端
STAT:該進程目前的狀態
R:running運行態
S:interruptable sleeping可中斷睡眠
D:uninterruptable sleeping不可中斷睡眠
T:Stopped停止態
Z:zombie僵死態
+:前台進程
l:多線程進程
N:低優先級進程
<:高優先級進程
s:session leader會話引領者(在終端上啟動個shell,在shell程序上啟動好幾個進程,shell就是領導者)
START:被觸發啟動的時間
TIME:實際使用CPU運行的時間
COMMAND:該程序的實際指令
VSZ:進程在內存中的大小,以千字節(KB)為單位
RSS:進程在未換出時占用的物理內存
STAT:代表當前進程狀態的雙字符狀態碼(雙字符狀態碼能比Unix風格輸出的單字符狀態碼更清楚地表示進程的當前狀態)

GNU風格的參數

GNU開發人員在ps命令中加入了另外一些參數,其中一些GNU長參數複製了現有的Unix或BSD類型的參數,另一些則提供了新功能。

GNU風格的ps命令參數及描述

--Group grouplist 顯示組ID在grouplist列表中的進程,和“-G”選項相同

--User userlist 顯示用戶ID在userlist列表中的進程,和“-U”選項相同

--pid pidlist 顯示PID在pidlist列表中的進程,和“-p”選項相同

--cols n 將屏幕寬度設置n列

--ppid pidlist 顯示父PID在pidlist列表中的進程

--group grouplist 顯示有效組ID在grouplist列表中的進程,和“-G”選項相同

--user userlist 顯示有效用戶ID在userlist列表中的進程,和“-U”選項相同

--sid sidlist 顯示會話ID在sidlist列表中的進程

--rows n 將屏幕高度設置n排

--info 顯示調試信息

--cumulative 包含已停止的子進程信息

--format formatlist 僅顯示由formatlist指定的列

--deselect 顯示所有進程

--sort 指定輸出按哪列排序

--tty ttylist 顯示終端ID在ttylist列表中的進程,和“-t”選項相同

--forest 用層級結構顯示出進程和父進程之間的關係

--version 顯示ps的版本號,和“-V”選項相同

--heading 列的頭

--no-heading 不顯示列的頭

--context 顯示額外的安全信息

--help 顯示幫助

總結:其實好多參數是用不到的,最常用的兩種組合就是ps aux和ps -ef了。

最後更新:2017-06-28 09:32:13

  上一篇:go  Nginx報錯403 forbidden幾個解決方法
  下一篇:go  centos6關閉sendmail服務