您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux基礎命令ps的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux基礎命令ps的用法”吧!
ps
ps指令可以顯示系統中當前進程的信息,它的輸出結果是高度可定制的。如果您希望重復更新所選內容和顯示的信息,請使用top(1)代替。
請注意,“ps-aux”與“ps aux”不同。POSIX和UNIX標準要求“ps-aux”打印名為“x”的用戶擁有的所有進程,以及打印由-a選項選擇的所有進程。如果名為“x”的用戶不存在,此ps可以將命令解釋為“ps aux”,并打印警告。此行為旨在幫助轉換舊腳本和習慣。它是脆弱的,隨時可能發生變化,因此不應依賴它。
默認情況下,ps選擇所有具有相同有效用戶ID(EUID=EUID)的進程作為當前用戶,并與調用方相關聯的終端。它顯示進程ID(PID=PID)、與進程關聯的終端(tname=TTY)、[dd-]hh:mm:SS格式的累計CPU時間(time=TIME)和可執行名稱(ucmd=CMD)。默認情況下輸出未排序。
使用BSD樣式的選項將向默認顯示中添加進程狀態(stat=STAT),并顯示命令args(args=命令)而不是可執行名稱。您可以使用PS_FORMAT環境變量重寫此操作。使用BSD樣式的選項還將更改流程選擇,以包括您擁有的其他終端(TTY)上的進程;或者,這可以描述為將選擇設置為篩選的所有進程的集合,以排除其他用戶擁有的進程或終端上的進程。當選項被描述為“相同”時,不考慮這些影響,所以-M將被認為與Z相同等等。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
ps [選項]
2、選項列表
選項 | 說明 |
--help | 顯示幫助文檔 |
-V | V | --version | 顯示命令版本 |
--info | 顯示調試信息 |
L | 列出所有的格式 |
簡單選項 | |
-A | -e | 選擇所有進程 |
-N | --deselect | 反向選擇不符合條件的 |
T | 選擇符合的終端 |
-a | 選擇除會話進程和與終端無關的進程以外的所有進程。 |
a | 此選項導致ps列出帶有終端(TTY)的所有進程,或在與x選項一起使用時列出所有進程。 |
-d | 選擇所有進程,忽略進程所有者 |
g | 全部的進程,包含會話領導 |
r | 將選擇限制為僅運行進程。 |
x | 此選項導致ps列出您擁有的所有進程(與ps相同的EUID),或者在與a選項一起使用時列出所有進程。 |
多個選項 | 這些選項以空白分隔或逗號分隔列表的形式接受單個參數。它們可以多次使用。 |
-Ccmdlist | 按命令名選擇。這將選擇在cmdlist中給出可執行名稱的進程。 |
-Ggrplist | 選擇進程所屬的組id與給定list匹配的進程 |
Uuserlist | 按有效用戶ID(EUID)或名稱選擇。有效用戶ID描述進程使用其文件訪問權限的用戶 |
-Uuserlist | 按實際用戶ID(RUID)或名稱進行選擇。真正的用戶ID標識創建進程的用戶, |
-ggrplist | 按會話或有效組名選擇。 |
p pidlist | 按進程ID選擇。 |
-ppidlist | 按進程ID選擇。 |
-ssesslist | 按照會話ID選擇 |
t ttylist | 通過tty選擇。與-t和--tty幾乎相同,但也可以與空ttylist一起使用,以指示與ps關聯的終端。 |
-t ttylist | 選擇指定的tty |
-uuserlist | 按有效用戶ID(EUID)或名稱選擇,等價于“U 和“--user” |
--Groupgrplist | 等價于“-G” |
--Useruserlist | 等價于“-U” |
--groupgrplist | 按有效組ID(EGID)或名稱選擇。有效組ID描述進程使用其文件訪問權限的組。 |
--pidpidlist | 等價于“-p”和“p” |
-ppidppidlist | 選擇父進程id匹配的進程 |
--sidsesslist | 等價于“-s” |
--ttyttylist | 等價于“-t”和“t” |
--useruserlist | 等價于“-u”和“U” |
-123 | 等價于“--sid 123” |
123 | 等價于“—pid 123” |
3、輸出格式控制
格式 | 說明 |
-f | -F | 輸出完整的格式。它還會導致輸出命令參數。當與-L一起使用時,將添加NLWP(線程數)和LWP(線程ID)列。 |
-Oformat | 類似-o,但預加載了一些默認列。等價于“-o pid,format,state,tname,time,command”或者“-o pid,format,tname,time,cmd” |
Oformat | 預加載的o。當用作格式設置選項時,它與-O完全相同,具有BSD個性。 |
-M | 添加一列安全數據。 |
X | 寄存器格式 |
Z | 等價于“-M” |
-c | 顯示-l選項的不同調度程序信息。 |
j | BSD作業控制格式 |
-j | 作業格式 |
l | BSD長格式 |
-l | 長格式,經常和“-y”一起使用 |
oformat | 等價于“-o”和“--format” |
-oformat | 用戶定義格式。format是以空格分隔或逗號分隔的列表形式的單個參數,它提供了一種指定單個輸出列的方法。標頭可以按需要重命名(ps -o pid,ruser=RealUser -o comm=Command)。如果所有列標題都是空的(ps -o pid= -o comm=),那么標題行將不會被輸出。寬標頭所需的列寬度將增加;這可用于擴展諸如WCHAN之類的列(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm)。顯式寬度控制(ps opid,wchan:42,cmd)也被提供。ps -o pid=X,comm=Y的行為隨個性而變化,輸出可能是一個名為“X,comm=Y”的列,也可以是兩個名為“X”和“Y”的列。使用PS_FORMAT環境變量按需要指定默認值;DefSysV和DefBSD是可用于選擇默認UNIX或BSD列的宏。 |
s | 顯示信號格式 |
u | 以用戶為主的模式 |
v | 以虛擬內存為主的模式 |
-y | 不顯示標志位 |
-Z | 顯示安全上下文格式 |
--formatformat | 和“-o”一樣 |
--context | 顯示安全上下文格式 |
4、輸出修飾符
修飾符 | 說明 |
-H | 顯示進程層次結構 |
O order | 排序,過時的操作 |
S | 總結一些信息,如CPU使用情況,從死子進程到父進程。 |
c | 顯示真正的命令名。這是從可執行文件的名稱派生出來的,而不是從argv值派生的。因此,沒有顯示命令參數和對它們的任何修改 |
e | 在命令之后顯示環境 |
f | --forest | ASCII格式的進程層次結構 |
h | 沒有頭 |
k spec | 指定排序順序,等價于“--sort” |
-nnamelist | N namelist | 正確的WCHAN顯示需要名稱列表文件,并且必須與當前Linux內核完全匹配才能得到正確的輸出。如果沒有此選項,則名稱列表的默認搜索路徑是: $PS_SYSMAP $PS_SYSTEM_MAP /proc/*/wchan /boot/System.map-`uname -r` /boot/System.map /lib/modules/`uname -r`/System.map /usr/src/linux/System.map /System.map |
n | WCHAN和User的數字輸出。(包括所有類型的UID和GID) |
-w | w | 寬輸出,對無限寬度使用此選項兩次 |
--cols n | --columns n | --width n | 設置屏幕寬度 |
--cumulative | 包括一些死子進程數據(作為父進程的和) |
--headers | 重復頭行,每頁輸出一行 |
--no-headers | 根本不打印標題行 |
--lines n | --rows n | 設置屏幕高度 |
--sort spec | 排序。語法是“[+|-]key[,[+|-]key[,...]]”,例如,ps jax --sort=uid,-ppid,+pid |
5、線程模式
線程模式 | 說明 |
H | 把線程當做進程顯示 |
-L | 顯示線程的LWP NLWP |
-T | 顯示線程的SPID |
m | -m | 在進程之后顯示線程 |
6、說明
這個ps通過讀取“/proc”中的虛擬文件來工作。這個ps不需要是setuid kmem,也不需要有任何特權來運行。不要給這個ps任何特殊的權限。此ps需要訪問名稱列表數據以獲得正確的WCHAN顯示。對于2.6之前的內核,必須安裝System.map文件。
CPU使用率當前表示為進程在整個生命周期中運行的時間百分比。CPU使用率不太可能達到100%。
SIZE和RSS字段不計算進程的某些部分,包括頁表、內核堆棧、結構體thread_info和task_struct。這通常是至少20kb的內存大小。SIZE是進程的虛擬大小(代碼數據堆棧)。
標記為“defunct”的進程是死進程(所謂的“僵尸”),因為它們的父進程沒有正確地銷毀它們。如果父進程退出,則init(8)將銷毀這些進程。
如果用戶名的長度大于顯示列的長度,則將顯示數字用戶ID。
7、進程標志
這些值的和顯示在“F”列中,該列由標志輸出說明符提供。
1,已經fork,但是沒有執行。
4,使用超級用戶權限。
8、進程狀態碼
下面是s、stat和state輸出說明符(標頭“stat”或“S”)將顯示的用于描述進程狀態的不同值:
D,不間斷睡眠(通常為IO)。
R,正在運行或可運行(在運行隊列上)。
S,可中斷睡眠(等待事件完成)。
T,停止,要么是被作業控制信號阻止,要么是因為它正在被跟蹤。
W,分頁(自2.6.xx內核以來無效)。
X,死了(不應該被看見)。
Z,已停止(“僵尸”)進程,終止但未由其父進程收獲。
對于bsd格式和當使用stat關鍵字時,可能會顯示其他字符:
<,高優先級(對其他用戶不好)。
N,低優先級(對其他用戶很好)。
L,將頁面鎖定在內存中(用于實時和自定義IO)。
s,是會話。
l,是多線程的。
+,在前臺進程組中。
9、AIX格式描述符
這個ps支持AIX格式描述符,它們的工作方式有點像printf(1)和printf(3)的格式代碼。例如,正常的默認輸出可以這樣產生:ps -eo "%p %y %x %c
CODE NORMAL HEADER
%C pcpu %CPU
%G group GROUP
%P ppid PPID
%U user USER
%a args COMMAND
%c comm COMMAND
%g rgroup RGROUP
%n nice NI
%p pid PID
%r pgid PGID
%t etime ELAPSED
%u ruser RUSER
%x time TIME
%y tty TTY
%z vsz VSZ
10、標準格式說明符
以下是用于控制輸出格式(例如,使用選項-o)或使用GNU樣式的“--sort”序選項對所選進程進行排序的不同關鍵字。例如,“ps -eo pid,user,args --sort user”。這個版本的ps試圖識別大多數在ps的其他實現中使用的關鍵字。以下用戶定義的格式說明符可能包含空格:args, cmd, comm,command, fname, ucmd, ucomm, lstart, bsdstart, start。某些關鍵字可能無法用于排序。
CODE | HEADER | 說明 |
%cpu | %CPU | 進程的CPU利用率為“#.#”格式。當前,它是CPU時間除以進程運行的時間(cputime/realtime比率),表示為百分比。除非你是幸運的,否則它不會達到100%。(別名pcpu) |
%mem | %MEM | 進程的駐留集大小與機器上物理內存的比率,以百分比表示。(別名PMEM) |
args | COMMAND | 命令,它的所有參數都是字符串。可以顯示對參數的修改。該列中的輸出可能包含空格。標記為“已失效”的進程部分死亡,等待其父進程完全銷毀。有時進程args將不可用;當發生這種情況時,ps將可執行文件的名稱打印在括號中。(別名cmd,命令)。 當最后指定該列時,該列將擴展到顯示的邊緣。如果ps不能確定顯示寬度,例如當輸出被重定向(管道)到一個文件或另一個命令時,輸出寬度是未定義的。(它可以是80,無限,TERM等決定)環境變量COLUMNS或-cols選項可以用于精確地確定這種情況下的寬度。w或-w選項也可用于調整寬度。 |
blocked | BLOCKED | blocked信號掩碼。根據字段的寬度,以十六進制格式顯示32位或64位掩碼。(別名sig_block, sigmask)。 |
bsdstart | START | 命令開始的時間。如果進程在24小時前啟動,則輸出格式為“hh:mm”,否則為“mmm dd”(其中mmm是月份的三個字母)。 |
bsdtime | TIME | 用戶和系統的累積CPU時間,。顯示格式通常為“mmm:ss”,但如果進程占用的cpu時間超過999分鐘,則可以移到右邊。 |
c | C | 處理器利用率當前,這是進程生存期內使用百分比的整數值。(見%cpu)。 |
caught | CAUGHT | 捕獲信號的掩碼,見信號(7)。根據字段的寬度,以十六進制格式顯示32或64位掩碼。(別名sig_catch, sigcatch) |
cgroup | CGROUP | 顯示進程所屬的控制組。 |
class | CLS | 進程的調度類。(別名policy, cls)。字段的可能值是: - not reported TS SCHED_OTHER FF SCHED_FIFO RR SCHED_RR B SCHED_BATCH ISO SCHED_ISO IDL SCHED_IDLE ? unknown value |
cls | CLS | 同class |
cmd | CMD | 同args |
comm | COMMAND | 命令名(只有可執行的名稱)。將不會顯示對命令名的修改。標記為“已失效”的進程部分死亡,等待其父進程完全銷毀。該列中的輸出可能包含空格。(別名ucmd,ucomm)。 當最后指定該列時,該列將擴展到顯示的邊緣。如果ps不能確定顯示寬度,例如當輸出被重定向(管道)到一個文件或另一個命令時,輸出寬度是未定義的(它可以是80,無限,TERM)。COLUMNS環境變量或--cols選項可以用于精確地確定這種情況下的寬度。w或-w選項也可用于調整寬度。 |
command | COMMAND | 同args |
cp | CP | CPU使用率/ms |
cputime | TIME | 累計CPU時間,"[DD-]HH:MM:SS"格式。(別名time)。 |
egid | EGID | 進程的有效組ID數為十進制整數。(別名gid)。 |
egroup | EFROUP | 進程的有效組ID。如果可以獲得并且字段寬度允許,這將是文本組ID,否則將是十進制表示。(別名group)。 |
eip | EIP | 指令指針 |
esp | ESP | 棧指針 |
etime | ELAPSED | 自進程啟動以來,以[dd-]hh:]mm:SS形式運行的時間。 |
euid | EUID | 有效用戶ID,別名uid |
euser | EUSER | 有效用戶名。如果可以獲得并且字段寬度允許,這將是文本用戶ID,否則將是十進制表示。n選項可用于強制十進制表示。(別名uname,user)。 |
f | F | 與進程關聯的標志,請參閱流程標志部分。(別名flag, flags)。 |
fgid | FGID | 文件系統訪問組ID。(別名fsgid)。 |
fgroup | FGROUP | 文件系統訪問組ID。如果可以獲得并且字段寬度允許,這將是文本用戶ID,否則將是十進制表示。(別名fsgroup) |
flag | F | 同f |
flags | F | 同f |
fname | COMMAND | 進程可執行文件的基名的前8個字節。該列中的輸出可能包含空格。 |
fuid | FUID | 文件系統訪問用戶ID。(別名fsuid)。 |
fuser | FUSER | 文件系統訪問用戶ID。如果可以獲得并且字段寬度允許,這將是文本用戶ID,否則將是十進制表示。 |
gid | GID | 同egid |
group | GROUP | 同egroup |
ignored | IGNORED | 被忽略的信號的掩碼,根據字段的寬度,以十六進制格式顯示32位或64位掩碼。(別名sig_ignore, sigignore) |
label | LABEL | 安全標簽,最常用于SELinux上下文數據。這是針對在高安全系統上發現的強制訪問控制(“MAC”)。 |
lstart | STARTED | 命令開始的時間。 |
lwp | LWP | 正在報告的LWP(輕量過程或線程)ID。(別名spid,tid) |
ni | NI | nice值,范圍從19(最好)到-20(對他人不友好)。 (別名nice)。 |
nice | NI | 同ni |
nlwp | NLWP | 進程中的lwps(線程)數。(別名thcount)。 |
nwchan | WCHAN | 進程處于休眠狀態的內核函數的地址(如果需要內核函數名稱,請使用wchan)。正在運行的任務將在本列中顯示一個破折號(‘-’)。 |
pcpu | %CPU | 同%cpu |
pending | PENDING | 掛起信號的掩碼。進程上掛起的信號不同于單個線程上的待決信號。使用m選項或-m選項查看兩者。根據字段的寬度,以十六進制格式顯示32位或64位掩碼。(別名sig)。 |
pgid | PGID | 進程組ID或相應的流程組領導的進程ID。(別名pgrp)。 |
pgrp | PGRP | 同pgid |
pid | PID | 進程的進程ID號 |
pmem | %MEM | 同%mem |
policy | POL | 同cls |
ppid | PPID | 父進程id |
psr | PSR | 進程當前分配給的處理器。 |
rgid | RGID | 真實的組id |
rgroup | RGROUP | 真正的組名。如果可以獲得并且字段寬度允許,這將是文本組ID,否則將是十進制表示。 |
rip | RIP | 64位指令指針。 |
rsp | RSP | 64位棧指針。 |
rss | RSS | 駐留集大小,任務使用的非交換物理內存(以千字節為單位)。(別名rssize,rsz)。
|
rssize | RSS | 同rss |
rsz | RSZ | 同rss |
rtprio | RTPRIO | 實時優先級 |
ruid | RUID | 實際用戶ID |
ruser | RUSER | 真實的用戶ID。如果可以獲得并且字段寬度允許,這將是文本用戶ID,否則將是十進制表示。 |
s | S | 最小狀態顯示(一個字符)。 |
sched | SCH | 進程的調度策略。策略SCHED_OTHER(SCHED_Normal)、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_ISO和SCHED_IDELL分別顯示為0、1、2、3、4和5。 |
sess | SESS | 會話ID或等效的會話領導的進程ID。(別名session,sid)。 |
sgi_p | P | 進程當前正在執行的處理器。如果進程當前未運行或無法運行,則顯示“*”。 |
sgid | SGID | 保存的組ID。(別名svgid) |
sgroup | SGROUP | 保存的組名。如果可以獲得并且字段寬度允許,這將是文本組ID,否則將是十進制表示。 |
sid | SID | 同sess |
sig | PENDING | 同pending |
sigcatch | CAUGHT | 同caught |
sigignore | IGNORED | 同ignored |
sigmask | BLOCKED | 同blocked |
size | SZ | 如果進程要臟所有可寫頁,然后交換掉,則需要交換大約的交換空間。這個數字很粗糙! |
spid | SPID | 同lwp |
stackp | STACKP | 進程堆棧的底部(開始)地址 |
start | STARTED | 命令開始的時候。如果進程在24小時前啟動,則輸出格式為“hh:mm:ss”,否則為“mmm dd”(其中mmm是三個字母的月份名稱)。 |
start_time | START | 進程的開始時間或日期。只有進程未啟動的年份(即調用ps的年份)或“mmmdd”(如果進程未在同一天啟動)或“hh:mm”將顯示。 |
stat | STAT | 多字符進程狀態。有關不同值的含義,請參見處理狀態代碼一節。如果只希望顯示第一個字符,請參見s和state。 |
state | S | 同s |
suid | SUID | 保存的用戶ID。(別名svuid)。 |
suser | SUSER | 保存的用戶名。如果可以獲得并且字段寬度允許,這將是文本用戶ID,否則將是十進制表示。(別名svuser) |
svgid | SVGID | 同sgid |
svuid | SVUID | 同suid |
sz | SZ | 進程核心圖像的物理頁面大小。這包括文本、數據和堆棧空間。當前排除了設備映射;這可能會發生更改。參見vsz和rss。 |
thcount | THCNT | 同nlwp |
tid | TID | 同lwp |
time | TIME | 統計CPU時間,"[DD-]HH:MM:SS"格式。(別名cputime)。 |
tname | TTY | 控制TY(終端)(別名tt,tty)。 |
tpgid | TPGID | 進程連接到的TTY(終端)上的前臺進程組的ID,如果進程沒有連接到TTY,則為-1。 |
tt | TT | 同tname。 |
tty | TT | 同tname。 |
ucmd | CMD | 同comm。 |
ucomm | COMMAND | 同comm。 |
uid | UID | 同euid。 |
uname | USER | 同euser。 |
user | USER | 同euser。 |
vsize | VSZ | 同vsz。 |
vsz | VSZ | 進程的虛擬內存大小(1024字節單位)。當前排除了設備映射;這可能會發生更改。(別名vsize)。 |
wchan | WHAN | 進程處于休眠狀態的內核函數的名稱,如果進程正在運行,則為“-”,如果進程是多線程且ps不顯示線程,則為“*”。 |
11、環境變量
下面的環境變量會影響ps的行為:
COLUMNS,覆蓋默認的寬度。
LINES,覆蓋默認的高度。
PS_PERSONALITY,設置為POSIX中的一個,old,linux,bsd,sun,digital。
CMD_ENV,設置為POSIX中的一個,old,linux,bsd,sun,digital。
I_WANT_A_BROKEN_PS,解釋過時命令。
LC_TIME,日期格式。
PS_COLORS,現在還不支持。
PS_FORMAT,默認輸出格式覆蓋。
PS_SYSMAP,默認名稱列表(System.map)位置。
PS_SYSTEM_MAP,默認名稱列表(System.map)位置。
POSIXLY_CORRECT,不要找借口忽視不好的“特性”。
POSIX2,當設置為“on”時,充當POSIXLY_TRIDER。
UNIX95,不要找借口忽視不好的“特性”。
_XPG,取消CMD_ENV=irix非標準行為。
一般來說,設置這些變量是個壞主意。一個例外是CMD_ENV或PS_PERSONALITY,對于正常系統,可以將它們設置為Linux。如果沒有這種設置,PS就會遵循Unix 98標準中無用的和壞的部分。
12、例子代碼
|
13、實例
1)顯示所有用戶的所有進程信息
|
2)顯示用戶david的進程信息
|
感謝各位的閱讀,以上就是“Linux基礎命令ps的用法”的內容了,經過本文的學習后,相信大家對Linux基礎命令ps的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。