ps。ps 命令是進(jìn)程狀態(tài) (Process Status) 的縮寫(xiě)。ps 命令用來(lái)列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程。ps 命令列出的是當(dāng)前那些進(jìn)程的快照,就是執(zhí)行 ps 命令的那個(gè)時(shí)刻的那些進(jìn)程,如果想要?jiǎng)討B(tài)的顯示進(jìn)程信息,就可以使用 top 命令。要對(duì)進(jìn)程進(jìn)行檢測(cè)和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而 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í)行該命令得到的。
ps 為我們提供了進(jìn)程的一次性 (不要給性加重音) 的查看,他所提供的查看結(jié)果并不動(dòng)態(tài)連續(xù);如果想對(duì)進(jìn)程進(jìn)行時(shí)間監(jiān)控,應(yīng)該使用 top 工具。
kill 命令用來(lái)殺死進(jìn)程Linux 上進(jìn)程有五種狀態(tài)
wait() 系統(tǒng)調(diào)用后釋放)SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信號(hào)后停止運(yùn)行)ps 工具標(biāo)識(shí)進(jìn)程的物種狀態(tài)碼:
狀態(tài)碼
說(shuō)明
D
不可中斷
R
運(yùn)行
S
中斷
T
停止
Z
僵尸
ps 詳解:
ps [參數(shù)]案例 1:顯示所有進(jìn)程:
#ps -A \ PID TTY TIME CMD 1 ? 00:00:04 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0
省略部分結(jié)果
案例 2:顯示指定用戶信息:
\#ps -u root PID TTY TIME CMD 1 ? 00:00:04 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0
省略部分結(jié)果
案例 3:顯示所有進(jìn)程信息,連同命令行
\#ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:45 ? 00:00:04 /sbin/init root 2 0 0 19:45 ? 00:00:00 [kthreadd] root 3 2 0 19:45 ? 00:00:00 [migration/0] root 4 2 0 19:45 ? 00:00:00 [ksoftirqd/0]
省略部分結(jié)果
案例 4:ps 與 grep 常用組合用法,查找特定進(jìn)程
命令:
\#ps -ef|grep ssh root 1358 1 0 19:46 ? 00:00:00 /usr/sbin/sshd root 1650 1358 0 19:47 ? 00:00:00 sshd:root@pts/0 root 3598 1652 0 21:27 pts/0 00:00:00 grep ssh
案例 5:將目前屬于您自己這次登入的 PID 與相關(guān)信息列出
\#ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1652 1650 0 80 0 - 27116 wait pts/0 00:00:00 bash 4 R 0 3600 1652 0 80 0 - 27033 - pts/0 00:00:00 ps
分析說(shuō)明:各相關(guān)信息的意義:
F 代表這個(gè)程序的標(biāo)識(shí) (flag),4 代表使用者為 super userS 代表這個(gè)程序的狀態(tài) (STAT)。UID:程序被該 UID 所擁有PID:就是這個(gè)程序的 IDPPID:則是其上級(jí)父程序的 IDC:CPU 使用的資源百分比PRI:這個(gè)是 Priority(優(yōu)先執(zhí)序行) 的縮寫(xiě)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。
案例 6:列出目前所有的正在內(nèi)存當(dāng)中的程序
\#ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19356 1612 ? Ss 19:45 0:04 /sbin/init root 2 0.0 0.0 0 0 ? S 19:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 19:45 0:00 [migration/0]
省略部分結(jié)果
分析說(shuō)明:
USER:該 process 是屬于哪個(gè)使用者賬號(hào)的PID:該 process 的號(hào)碼%CPU:該 process 使用掉的 CPU 資源百分比%MEM:該 process 所占用的物理內(nèi)存百分比VSZ:該 process 使用掉的虛擬內(nèi)存量 (kb)RSS:該 process 占用的固定的內(nèi)存量 (kb)TTY:該 process 是在哪個(gè)終端機(jī)上運(yùn)行,若與終端機(jī)無(wú)關(guān),則顯示 ? ,另外,tty1-tty6 表示本機(jī)上的登入者程序,若為 pts/0 等等,則表示為由網(wǎng)絡(luò)接進(jìn)主機(jī)的程序。STAT:該程序目前的狀態(tài),主要狀態(tài)有:R(該程序目前正在運(yùn)行,或者是可被運(yùn)行),S(該程序目前正在睡眠中,但可被某些訊號(hào)喚醒),T(該程序應(yīng)該已經(jīng)終止,但是其父進(jìn)程卻無(wú)法正常的終止它,造成僵死程序的狀態(tài))。START:該 process 被觸發(fā)啟動(dòng)的時(shí)間TIME:該 process 實(shí)際使用 CPU 運(yùn)作的時(shí)間COMMAND:該程序的實(shí)際命令。案例 7:列出類似程序樹(shù)的程序顯示
\#ps -axjf Warning:bad syntax,perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:00 \_ [migration/0] 2 4 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0] 2 5 0 0 ? -1 S 0 0:00 \_ [migration/0]
其他案例:
使用:
\#ps -aux|more // 實(shí)現(xiàn)分頁(yè)查看
使用:
\#ps -aux>test.txt // 把所有進(jìn)程顯示出來(lái),并輸出到 test.txt 文件
使用:
\#ps -o pid,ppid,pgrp,session,tpgid,comm// 輸出指定的字段 PID PPID PGRP SESS TPGID COMMAND 1556 1554 1556 1556 1582 bash 1582 1556 1582 1556 1582 ps