【Linux】一步一步学Linux——ps命令(119)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項(xiàng)
- 04. 參考示例
- 05. 附錄
 
01. 命令概述
ps命令用于報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)。ps命令是“process status”的縮寫(xiě)??梢源钆鋕ill指令隨時(shí)中斷、刪除不必要的程序。ps命令是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令,使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒(méi)有僵死、哪些進(jìn)程占用了過(guò)多的資源等等,總之大部分信息都是可以通過(guò)執(zhí)行該命令得到的。
進(jìn)程狀態(tài)
R 運(yùn)行 Runnable (on run queue) 正在運(yùn)行或在運(yùn)行隊(duì)列中等待。 S 睡眠 Sleeping 休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào)。 I 空閑 Idle Z 僵死 Zombie(a defunct process) 進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放。 D 不可中斷 Uninterruptible sleep (ususally IO) 收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生。 T 終止 Terminate 進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行。 P 等待交換頁(yè) W 無(wú)駐留頁(yè) has no resident pages 沒(méi)有足夠的記憶體分頁(yè)可分配。 X 死掉的進(jìn)程 < 高優(yōu)先級(jí)進(jìn)程 高優(yōu)先序的進(jìn)程 N 低優(yōu)先 級(jí)進(jìn)程 低優(yōu)先序的進(jìn)程 L 內(nèi)存鎖頁(yè) Lock 有記憶體分頁(yè)分配并縮在記憶體內(nèi) s 進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程); l 多進(jìn)程的(使用 CLONE_THREAD, 類(lèi)似 NPTL pthreads) + 位于后臺(tái)的進(jìn)程組02. 命令格式
格式:ps [參數(shù)]03. 常用選項(xiàng)
-a 顯示所有終端機(jī)下執(zhí)行的進(jìn)程,除了階段作業(yè)領(lǐng)導(dǎo)者之外。a 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程,包括其他用戶(hù)的進(jìn)程。-A 顯示所有進(jìn)程。-c 顯示CLS和PRI欄位。c 列出進(jìn)程時(shí),顯示每個(gè)進(jìn)程真正的指令名稱(chēng),而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示。-C<指令名稱(chēng)> 指定執(zhí)行指令的名稱(chēng),并列出該指令的進(jìn)程的狀況。-d 顯示所有進(jìn)程,但不包括階段作業(yè)領(lǐng)導(dǎo)者的進(jìn)程。-e 此參數(shù)的效果和指定"A"參數(shù)相同。e 列出進(jìn)程時(shí),顯示每個(gè)進(jìn)程所使用的環(huán)境變量。-f 顯示UID,PPIP,C與STIME欄位。f 用ASCII字符顯示樹(shù)狀結(jié)構(gòu),表達(dá)進(jìn)程間的相互關(guān)系。-g<群組名稱(chēng)> 此參數(shù)的效果和指定"-G"參數(shù)相同,當(dāng)亦能使用階段作業(yè)領(lǐng)導(dǎo)者的名稱(chēng)來(lái)指定。g 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程,包括群組領(lǐng)導(dǎo)者的進(jìn)程。-G<群組識(shí)別碼> 列出屬于該群組的進(jìn)程的狀況,也可使用群組名稱(chēng)來(lái)指定。h 不顯示標(biāo)題列。-H 顯示樹(shù)狀結(jié)構(gòu),表示進(jìn)程間的相互關(guān)系。-j或j 采用工作控制的格式顯示進(jìn)程狀況。-l或l 采用詳細(xì)的格式來(lái)顯示進(jìn)程狀況。L 列出欄位的相關(guān)信息。-m或m 顯示所有的執(zhí)行緒。n 以數(shù)字來(lái)表示USER和WCHAN欄位。-N 顯示所有的進(jìn)程,除了執(zhí)行ps指令終端機(jī)下的進(jìn)程之外。-p<進(jìn)程識(shí)別碼> 指定進(jìn)程識(shí)別碼,并列出該進(jìn)程的狀況。p<進(jìn)程識(shí)別碼> 此參數(shù)的效果和指定"-p"參數(shù)相同,只在列表格式方面稍有差異。r 只列出現(xiàn)行終端機(jī)正在執(zhí)行中的進(jìn)程。-s<階段作業(yè)> 指定階段作業(yè)的進(jìn)程識(shí)別碼,并列出隸屬該階段作業(yè)的進(jìn)程的狀況。s 采用進(jìn)程信號(hào)的格式顯示進(jìn)程狀況。S 列出進(jìn)程時(shí),包括已中斷的子進(jìn)程資料。-t<終端機(jī)編號(hào)> 指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的進(jìn)程的狀況。t<終端機(jī)編號(hào)> 此參數(shù)的效果和指定"-t"參數(shù)相同,只在列表格式方面稍有差異。-T 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程。-u<用戶(hù)識(shí)別碼> 此參數(shù)的效果和指定"-U"參數(shù)相同。u 以用戶(hù)為主的格式來(lái)顯示進(jìn)程狀況。-U<用戶(hù)識(shí)別碼> 列出屬于該用戶(hù)的進(jìn)程的狀況,也可使用用戶(hù)名稱(chēng)來(lái)指定。U<用戶(hù)名稱(chēng)> 列出屬于該用戶(hù)的進(jìn)程的狀況。v 采用虛擬內(nèi)存的格式顯示進(jìn)程狀況。-V或V 顯示版本信息。-w或w 采用寬闊的格式來(lái)顯示進(jìn)程狀況?! 顯示所有進(jìn)程,不以終端機(jī)來(lái)區(qū)分。X 采用舊式的Linux i386登陸格式顯示進(jìn)程狀況。-y 配合參數(shù)"-l"使用時(shí),不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位-<進(jìn)程識(shí)別碼> 此參數(shù)的效果和指定"p"參數(shù)相同。--cols<每列字符數(shù)> 設(shè)置每列的最大字符數(shù)。--columns<每列字符數(shù)> 此參數(shù)的效果和指定"--cols"參數(shù)相同。--cumulative 此參數(shù)的效果和指定"S"參數(shù)相同。--deselect 此參數(shù)的效果和指定"-N"參數(shù)相同。--forest 此參數(shù)的效果和指定"f"參數(shù)相同。--headers 重復(fù)顯示標(biāo)題列。--help 在線(xiàn)幫助。--info 顯示排錯(cuò)信息。--lines<顯示列數(shù)> 設(shè)置顯示畫(huà)面的列數(shù)。--no-headers 此參數(shù)的效果和指定"h"參數(shù)相同,只在列表格式方面稍有差異。--group<群組名稱(chēng)> 此參數(shù)的效果和指定"-G"參數(shù)相同。--Group<群組識(shí)別碼> 此參數(shù)的效果和指定"-G"參數(shù)相同。--pid<進(jìn)程識(shí)別碼> 此參數(shù)的效果和指定"-p"參數(shù)相同。--rows<顯示列數(shù)> 此參數(shù)的效果和指定"--lines"參數(shù)相同。--sid<階段作業(yè)> 此參數(shù)的效果和指定"-s"參數(shù)相同。--tty<終端機(jī)編號(hào)> 此參數(shù)的效果和指定"-t"參數(shù)相同。--user<用戶(hù)名稱(chēng)> 此參數(shù)的效果和指定"-U"參數(shù)相同。--User<用戶(hù)識(shí)別碼> 此參數(shù)的效果和指定"-U"參數(shù)相同。--version 此參數(shù)的效果和指定"-V"參數(shù)相同。--widty<每列字符數(shù)> 此參數(shù)的效果和指定"-cols"參數(shù)相同。04. 參考示例
4.1 查看當(dāng)前終端所有進(jìn)程狀態(tài)
[root@itcast ~]# psPID TTY TIME CMD11141 pts/1 00:00:00 su11145 pts/1 00:00:00 bash12661 pts/1 00:00:00 ps [root@itcast ~]#4.2 顯示所有進(jìn)程詳細(xì)信息
[root@itcast ~]# ps aux或者 [root@itcast ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 191300 3416 ? Ss 8月08 1:47 /usr/lib/sy root 2 0.0 0.0 0 0 ? S 8月08 0:00 [kthreadd]相關(guān)說(shuō)明
USER 用戶(hù)名
 UID 用戶(hù)ID(User ID)
 PID 進(jìn)程ID(Process ID)
 PPID 父進(jìn)程的進(jìn)程ID(Parent Process id)
 SID 會(huì)話(huà)ID(Session id)
 %CPU 進(jìn)程的cpu占用率
 %MEM 進(jìn)程的內(nèi)存占用率
 VSZ 進(jìn)程所使用的虛存的大小(Virtual Size)
 RSS 進(jìn)程使用的駐留集大小或者是實(shí)際內(nèi)存的大小,Kbytes字節(jié)。
 TTY 與進(jìn)程關(guān)聯(lián)的終端(tty)
 STAT 進(jìn)程的狀態(tài):進(jìn)程狀態(tài)使用字符表示的(STAT的狀態(tài)碼)
START 進(jìn)程啟動(dòng)時(shí)間和日期
 TIME 進(jìn)程使用的總cpu時(shí)間
 COMMAND 正在執(zhí)行的命令行命令
 NI 優(yōu)先級(jí)(Nice)
 PRI 進(jìn)程優(yōu)先級(jí)編號(hào)(Priority)
 WCHAN 進(jìn)程正在睡眠的內(nèi)核函數(shù)名稱(chēng);該函數(shù)的名稱(chēng)是從/root/system.map文件中獲得的。
 FLAGS 與進(jìn)程相關(guān)的數(shù)字標(biāo)識(shí)
4.3 查看所有進(jìn)程
方式一
[root@itcast ~]# ps -axPID TTY STAT TIME COMMAND1 ? Ss 1:47 /usr/lib/systemd/systemd --switched-root --system 2 ? S 0:00 [kthreadd]3 ? S 0:21 [ksoftirqd/0]5 ? S< 0:00 [kworker/0:0H]7 ? S 0:14 [migration/0]方式二
[root@itcast ~]# ps -A PID TTY TIME CMD1 ? 00:01:47 systemd2 ? 00:00:00 kthreadd3 ? 00:00:21 ksoftirqd/05 ? 00:00:00 kworker/0:0H7 ? 00:00:14 migration/08 ? 00:00:00 rcu_bh方式三
[root@itcast ~]# ps -ePID TTY TIME CMD1 ? 00:01:47 systemd2 ? 00:00:00 kthreadd3 ? 00:00:21 ksoftirqd/05 ? 00:00:00 kworker/0:0H4.4 顯示進(jìn)程詳細(xì)信息
[root@itcast ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 8月08 ? 00:01:47 /usr/lib/systemd/systemd --s root 2 0 0 8月08 ? 00:00:00 [kthreadd] root 3 2 0 8月08 ? 00:00:21 [ksoftirqd/0] root 5 2 0 8月08 ? 00:00:00 [kworker/0:0H] root 7 2 0 8月08 ? 00:00:14 [migration/0]4.5 顯示某個(gè)用戶(hù)的進(jìn)程
[root@itcast ~]# ps -u rootPID TTY TIME CMD1 ? 00:01:48 systemd2 ? 00:00:00 kthreadd3 ? 00:00:21 ksoftirqd/05 ? 00:00:00 kworker/0:0H4.6 顯示進(jìn)程名進(jìn)程信息
[root@itcast ~]# ps -C bashPID TTY TIME CMD10565 pts/1 00:00:00 bash11145 pts/1 00:00:00 bash86546 pts/0 00:00:00 bash [root@itcast ~]#4.7 通過(guò)進(jìn)程號(hào)顯示進(jìn)程詳細(xì)信息
[root@itcast ~]# ps -f -p 86546 UID PID PPID C STIME TTY STAT TIME CMD deng 86546 86518 0 09:38 pts/0 Ss+ 0:00 bash [root@itcast ~]#4.8 利用 cpu 或者內(nèi)存使用量對(duì)進(jìn)程排序
[root@itcast ~]# ps aux --sort=-pcpu,+pmem USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND polkitd 628 2.4 0.6 546192 14176 ? Ssl 8月08 96:32 /usr/lib/po dbus 611 0.9 0.1 61880 3292 ? Ss 8月08 38:49 /usr/bin/db root 610 0.5 0.2 398464 4560 ? Ssl 8月08 23:57 /usr/libexe deng 2521 0.2 0.2 611700 4396 ? Sl 8月08 8:38 /usr/libexe首先以 cpu 使用量排序呢, 如果 cpu 使用量相同,則以?xún)?nèi)存使用量排序。
4.9 顯示 ASCII 進(jìn)程樹(shù)
[root@itcast ~]# ps --forestPID TTY TIME CMD11141 pts/1 00:00:00 su11145 pts/1 00:00:00 \_ bash13809 pts/1 00:00:00 \_ ps [root@itcast ~]#4.10 顯示指定進(jìn)程號(hào)的子進(jìn)程
[root@itcast ~]# ps --pid 1PID TTY TIME CMD1 ? 00:01:48 systemd [root@itcast ~]# ps --ppid 1PID TTY TIME CMD392 ? 00:01:34 systemd-journal425 ? 00:00:00 lvmetad433 ? 00:00:01 systemd-udevd581 ? 00:00:03 auditd608 ? 00:00:00 alsactl4.11 顯示進(jìn)程的LWP線(xiàn)程號(hào)
[root@itcast ~]# ps -p 1 -LPID LWP TTY TIME CMD1 1 ? 00:01:48 systemd [root@itcast ~]#4.12 指定顯示字段
[root@itcast ~]# ps -e -o pid,uname,pcpu,pmem,commPID USER %CPU %MEM COMMAND1 root 0.0 0.1 systemd2 root 0.0 0.0 kthreadd3 root 0.0 0.0 ksoftirqd/05 root 0.0 0.0 kworker/0:0H7 root 0.0 0.0 migration/04.13 顯示是指定對(duì)應(yīng)的字段
[root@itcast ~]# ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,commPID USERNAME CPU_USAGE %MEM COMMAND1 root 0.0 0.1 systemd2 root 0.0 0.0 kthreadd3 root 0.0 0.0 ksoftirqd/04.14 顯示進(jìn)程已經(jīng)運(yùn)行的時(shí)間
[root@itcast ~]# ps -e -o pid,comm,etimePID COMMAND ELAPSED1 systemd 2-19:11:242 kthreadd 2-19:11:243 ksoftirqd/0 2-19:11:245 kworker/0:0H 2-19:11:24重點(diǎn)強(qiáng)調(diào)下 ps -o 選項(xiàng): 格式化輸出
為什么上面ps -eo pid,uname cmd 就可以看到 PID USER 和 CMD 呢,因?yàn)檫@里有一個(gè)對(duì)應(yīng)表 keywords
可以man ps去找下。
CODE HEADER DESCRIPTION
%cpu %CPU
%mem %MEM
args COMMAND
。。。。。。。 等等
還有格式化對(duì)照表:
? 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
4.15 查找特定進(jìn)程信息
[root@itcast ~]# ps -ef | grep ssh root 1183 1 0 8月08 ? 00:00:00 /usr/sbin/sshd -D deng 2286 2111 0 8月08 ? 00:00:01 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic" root 10561 1183 0 21:24 ? 00:00:00 sshd: deng [priv] deng 10563 10561 0 21:24 ? 00:00:00 sshd: deng@pts/1 root 16403 11145 0 22:18 pts/1 00:00:00 grep --color=auto ssh [root@itcast ~]#4.16 按 CPU 資源的使用量對(duì)進(jìn)程進(jìn)行排序
[root@itcast ~]# ps aux | sort -nk 34.17 按內(nèi)存資源的使用量對(duì)進(jìn)程進(jìn)行排序
[root@itcast ~]# ps aux | sort -rnk 44.18 將目前屬于您自己這次登入的 PID 與相關(guān)信息列示出來(lái)
[root@itcast ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 11141 10565 0 80 0 - 58600 do_wai pts/1 00:00:00 su 4 S 0 11145 11141 0 80 0 - 29188 do_wai pts/1 00:00:00 bash 0 R 0 21027 11145 0 80 0 - 38300 - pts/1 00:00:00 ps [root@itcast ~]#說(shuō)明:
各相關(guān)信息的意義:
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í)行序) 的縮寫(xiě),詳細(xì)后面介紹
NI 這個(gè)是 Nice 值
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。
4.19 列出類(lèi)似程序樹(shù)的程序顯示
[root@itcast ~]# ps -axjfPPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 2 0 0 ? -1 S 0 0:00 [kthreadd]2 3 0 0 ? -1 S 0 0:21 \_ [ksoftirqd/02 5 0 0 ? -1 S< 0 0:00 \_ [kworker/0:02 7 0 0 ? -1 S 0 0:14 \_ [migration/02 8 0 0 ? -1 S 0 0:00 \_ [rcu_bh]4.20 將所有進(jìn)程信息輸出到文件
[root@itcast ~]# ps aux >> txt05. 附錄
參考:【Linux】一步一步學(xué)Linux系列教程匯總
總結(jié)
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——ps命令(119)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 【Linux】一步一步学Linux——g
- 下一篇: 【Linux】一步一步学Linux——p
