Linux命令 ps - 報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)

2022-03-16 18:01 更新

ps

報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)

補(bǔ)充說明

ps命令 用于報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)??梢源钆鋕ill指令隨時(shí)中斷、刪除不必要的程序。ps命令是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令,使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等等,總之大部分信息都是可以通過執(zhí)行該命令得到的。

語法

ps(選項(xiàng))

選項(xiàng)

-a:顯示所有終端機(jī)下執(zhí)行的程序,除了階段作業(yè)領(lǐng)導(dǎo)者之外。
a:顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
-A:顯示所有程序。
-c:顯示CLS和PRI欄位。
c:列出程序時(shí),顯示每個(gè)程序真正的指令名稱,而不包含路徑,選項(xiàng)或常駐服務(wù)的標(biāo)示。
-C<指令名稱>:指定執(zhí)行指令的名稱,并列出該指令的程序的狀況。
-d:顯示所有程序,但不包括階段作業(yè)領(lǐng)導(dǎo)者的程序。
-e:此選項(xiàng)的效果和指定"A"選項(xiàng)相同。
e:列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
-f:顯示UID,PPIP,C與STIME欄位。
f:用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
-g<群組名稱>:此選項(xiàng)的效果和指定"-G"選項(xiàng)相同,當(dāng)亦能使用階段作業(yè)領(lǐng)導(dǎo)者的名稱來指定。
g:顯示現(xiàn)行終端機(jī)下的所有程序,包括群組領(lǐng)導(dǎo)者的程序。
-G<群組識(shí)別碼>:列出屬于該群組的程序的狀況,也可使用群組名稱來指定。
h:不顯示標(biāo)題列。
-H:顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。
-j或j:采用工作控制的格式顯示程序狀況。
-l或l:采用詳細(xì)的格式來顯示程序狀況。
L:列出欄位的相關(guān)信息。
-m或m:顯示所有的執(zhí)行緒。
n:以數(shù)字來表示USER和WCHAN欄位。
-N:顯示所有的程序,除了執(zhí)行ps指令終端機(jī)下的程序之外。
-p<程序識(shí)別碼>:指定程序識(shí)別碼,并列出該程序的狀況。
p<程序識(shí)別碼>:此選項(xiàng)的效果和指定"-p"選項(xiàng)相同,只在列表格式方面稍有差異。
r:只列出現(xiàn)行終端機(jī)正在執(zhí)行中的程序。
-s<階段作業(yè)>:指定階段作業(yè)的程序識(shí)別碼,并列出隸屬該階段作業(yè)的程序的狀況。
s:采用程序信號(hào)的格式顯示程序狀況。
S:列出程序時(shí),包括已中斷的子程序資料。
-t<終端機(jī)編號(hào)>:指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的程序的狀況。
t<終端機(jī)編號(hào)>:此選項(xiàng)的效果和指定"-t"選項(xiàng)相同,只在列表格式方面稍有差異。
-T:顯示現(xiàn)行終端機(jī)下的所有程序。
-u<用戶識(shí)別碼>:此選項(xiàng)的效果和指定"-U"選項(xiàng)相同。
u:以用戶為主的格式來顯示程序狀況。
-U<用戶識(shí)別碼>:列出屬于該用戶的程序的狀況,也可使用用戶名稱來指定。
U<用戶名稱>:列出屬于該用戶的程序的狀況。
v:采用虛擬內(nèi)存的格式顯示程序狀況。
-V或V:顯示版本信息。
-w或w:采用寬闊的格式來顯示程序狀況?!?x:顯示所有程序,不以終端機(jī)來區(qū)分。
X:采用舊式的Linux i386登陸格式顯示程序狀況。
-y:配合選項(xiàng)"-l"使用時(shí),不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位 。
-<程序識(shí)別碼>:此選項(xiàng)的效果和指定"p"選項(xiàng)相同。
--cols<每列字符數(shù)>:設(shè)置每列的最大字符數(shù)。
--columns<每列字符數(shù)>:此選項(xiàng)的效果和指定"--cols"選項(xiàng)相同。
--cumulative:此選項(xiàng)的效果和指定"S"選項(xiàng)相同。
--deselect:此選項(xiàng)的效果和指定"-N"選項(xiàng)相同。
--forest:此選項(xiàng)的效果和指定"f"選項(xiàng)相同。
--headers:重復(fù)顯示標(biāo)題列。
--help:在線幫助。
--info:顯示排錯(cuò)信息。
--lines<顯示列數(shù)>:設(shè)置顯示畫面的列數(shù)。
--no-headers:此選項(xiàng)的效果和指定"h"選項(xiàng)相同,只在列表格式方面稍有差異。
--group<群組名稱>:此選項(xiàng)的效果和指定"-G"選項(xiàng)相同。
--Group<群組識(shí)別碼>:此選項(xiàng)的效果和指定"-G"選項(xiàng)相同。
--pid<程序識(shí)別碼>:此選項(xiàng)的效果和指定"-p"選項(xiàng)相同。
--rows<顯示列數(shù)>:此選項(xiàng)的效果和指定"--lines"選項(xiàng)相同。
--sid<階段作業(yè)>:此選項(xiàng)的效果和指定"-s"選項(xiàng)相同。
--tty<終端機(jī)編號(hào)>:此選項(xiàng)的效果和指定"-t"選項(xiàng)相同。
--user<用戶名稱>:此選項(xiàng)的效果和指定"-U"選項(xiàng)相同。
--User<用戶識(shí)別碼>:此選項(xiàng)的效果和指定"-U"選項(xiàng)相同。
--version:此選項(xiàng)的效果和指定"-V"選項(xiàng)相同。
--widty<每列字符數(shù)>:此選項(xiàng)的效果和指定"-cols"選項(xiàng)相同。

由于ps命令能夠支持的系統(tǒng)類型相當(dāng)?shù)亩?,所以選項(xiàng)多的離譜!

實(shí)例

ps axo pid,comm,pcpu # 查看進(jìn)程的PID、名稱以及CPU 占用率
ps aux | sort -rnk 4 # 按內(nèi)存資源的使用量對進(jìn)程進(jìn)行排序
ps aux | sort -nk 3  # 按 CPU 資源的使用量對進(jìn)程進(jìn)行排序
ps -A # 顯示所有進(jìn)程信息
ps -u root # 顯示指定用戶信息
ps -efL # 查看線程數(shù)
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看進(jìn)程并按內(nèi)存使用大小排列
ps -ef # 顯示所有進(jìn)程信息,連同命令行
ps -ef | grep ssh # ps 與grep 常用組合用法,查找特定進(jìn)程
ps -C nginx # 通過名字或命令搜索進(jìn)程
ps aux --sort=-pcpu,+pmem # CPU或者內(nèi)存進(jìn)行排序,-降序,+升序
ps -f --forest -C nginx # 用樹的風(fēng)格顯示進(jìn)程的層次關(guān)系
ps -o pid,uname,comm -C nginx # 顯示一個(gè)父進(jìn)程的子進(jìn)程
ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定義標(biāo)簽
ps -e -o pid,comm,etime # 顯示進(jìn)程運(yùn)行的時(shí)間
ps -aux | grep named # 查看named進(jìn)程詳細(xì)信息
ps -o command -p 91730 | sed -n 2p # 通過進(jìn)程id獲取服務(wù)名稱

將目前屬于您自己這次登入的 PID 與相關(guān)信息列示出來

ps -l
#  UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
#  501   566   559     4006   0  31  0  4317620    228 -      Ss                  0 ttys001    0:00.05 /App...cOS/iTerm2 --server /usr/bin/login -fpl kenny /Ap...s/MacOS/iTerm2 --launch_shel
#  501   592   577     4006   0  31  0  4297048     52 -      S                   0 ttys001    0:00.63 -zsh
  • F 代表這個(gè)程序的旗標(biāo) (flag), 4 代表使用者為 super user
  • S 代表這個(gè)程序的狀態(tài) (STAT),關(guān)于各 STAT 的意義將在內(nèi)文介紹
  • UID 程序被該 UID 所擁有
  • PID 就是這個(gè)程序的 ID !
  • PPID 則是其上級(jí)父程序的ID
  • C CPU 使用的資源百分比
  • PRI 這個(gè)是 Priority (優(yōu)先執(zhí)行序) 的縮寫,詳細(xì)后面介紹
  • NI 這個(gè)是 Nice 值,在下一小節(jié)我們會(huì)持續(xù)介紹
  • ADDR 這個(gè)是 kernel function,指出該程序在內(nèi)存的那個(gè)部分。如果是個(gè) running的程序,一般就是 "-"
  • SZ 使用掉的內(nèi)存大小
  • WCHAN 目前這個(gè)程序是否正在運(yùn)作當(dāng)中,若為 - 表示正在運(yùn)作
  • TTY 登入者的終端機(jī)位置
  • TIME 使用掉的 CPU 時(shí)間。
  • CMD 所下達(dá)的指令為何
在預(yù)設(shè)的情況下, ps 僅會(huì)列出與目前所在的 bash shell 有關(guān)的 PID 而已,所以, 當(dāng)我使用 ps -l 的時(shí)候,只有三個(gè) PID。

列出目前所有的正在內(nèi)存當(dāng)中的程序

ps aux

# USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
# kenny             6155  21.3  1.7  7969944 284912   ??  S    二03下午 199:14.14 /Appl...OS/WeChat
# kenny              559  20.4  0.8  4963740 138176   ??  S    二03下午  33:28.27 /Appl...S/iTerm2
# _windowserver      187  18.0  0.6  7005748  95884   ??  Ss   二03下午 288:44.97 /Syst...Light.WindowServer -daemon
# kenny             1408  10.7  2.1  5838592 347348   ??  S    二03下午 138:51.63 /Appl...nts/MacOS/Google Chrome
# kenny              327   5.8  0.5  5771984  79452   ??  S    二03下午   2:51.58 /Syst...pp/Contents/MacOS/Finder
  • USER:該 process 屬于那個(gè)使用者賬號(hào)的
  • PID :該 process 的號(hào)碼
  • %CPU:該 process 使用掉的 CPU 資源百分比
  • %MEM:該 process 所占用的物理內(nèi)存百分比
  • VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)
  • RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)
  • TTY :該 process 是在那個(gè)終端機(jī)上面運(yùn)作,若與終端機(jī)無關(guān),則顯示 ?,另外, tty1-tty6 是本機(jī)上面的登入者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
  • STAT:該程序目前的狀態(tài),主要的狀態(tài)有
  • R :該程序目前正在運(yùn)作,或者是可被運(yùn)作
  • S :該程序目前正在睡眠當(dāng)中 (可說是 idle 狀態(tài)),但可被某些訊號(hào) (signal) 喚醒。
  • T :該程序目前正在偵測或者是停止了
  • Z :該程序應(yīng)該已經(jīng)終止,但是其父程序卻無法正常的終止他,造成 zombie (疆尸) 程序的狀態(tài)
  • START:該 process 被觸發(fā)啟動(dòng)的時(shí)間
  • TIME :該 process 實(shí)際使用 CPU 運(yùn)作的時(shí)間
  • COMMAND:該程序的實(shí)際指令

列出類似程序樹的程序顯示

ps -axjf

# USER               PID  PPID  PGID   SESS JOBC STAT   TT       TIME COMMAND            UID   C STIME   TTY
# root                 1     0     1      0    0 Ss     ??   10:51.90 /sbin/launchd        0   0 二03下午 ??
# root                50     1    50      0    0 Ss     ??    0:10.07 /usr/sbin/syslog     0   0 二03下午 ??
# root                51     1    51      0    0 Ss     ??    0:29.90 /usr/libexec/Use     0   0 二03下午 ??

找出與 cron 與 syslog 這兩個(gè)服務(wù)有關(guān)的 PID 號(hào)碼

ps aux | egrep '(cron|syslog)'

# root                50   0.0  0.0  4305532   1284   ??  Ss   二03下午   0:10.08 /usr/sbin/syslogd
# kenny            90167   0.0  0.0  4258468    184 s007  R+    9:23下午   0:00.00 egrep (cron|syslog)

把所有進(jìn)程顯示出來,并輸出到ps001.txt文件

ps -aux > ps001.txt

輸出指定的字段


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)