一、常用命令總結(jié)
ps -l 列出與本次登錄有關(guān)的進(jìn)程信息;
ps -aux 查詢內(nèi)存中進(jìn)程信息;
ps -aux | grep *** 查詢***進(jìn)程的詳細(xì)信息;
top 查看內(nèi)存中進(jìn)程的動態(tài)信息;
kill -9 pid 殺死進(jìn)程。
二、進(jìn)程簡述及查看方式
進(jìn)程是運(yùn)行的程序在系統(tǒng)中的存在形式,通過查看進(jìn)程的狀態(tài)信息,我們可以了解進(jìn)程占用的系統(tǒng)資源情況,對系統(tǒng)的運(yùn)行狀態(tài)進(jìn)行分析、調(diào)整,從而讓系統(tǒng)保持在一個平穩(wěn)的狀態(tài)下運(yùn)行。
Linux中查看進(jìn)程信息的基本命令有ps、top,其中ps(Process Status)查看的是進(jìn)程信息的一個快照,顯示的我們執(zhí)行ps這個命令時進(jìn)程的信息,top顯示的是進(jìn)程的動態(tài)信息,使用這個命令會看到進(jìn)程信息的動態(tài)變化。
三、進(jìn)程信息的查看
2.1 列出與 本次登錄系統(tǒng) 有關(guān)的進(jìn)程信息
ps ( ps -l, 列出的是詳細(xì)信息 )
F 代表這個程序的旗標(biāo) (flag), 4 代表使用者為 superuser;
S 代表這個程序的狀態(tài) (STAT);
( 常見的進(jìn)程的 STAT 如下:
R 運(yùn)行 Runnable (on run queue) 正在運(yùn)行或在運(yùn)行隊列中等待,
S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到信號,
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) 收到信號不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生,
T 終止 Terminate 進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運(yùn)行運(yùn)行,
P 等待交換頁 ,
W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配,
X 死掉的進(jìn)程 ,
< 高優(yōu)先級進(jìn)程 高優(yōu)先序的進(jìn)程 ,
N 低優(yōu)先 級進(jìn)程 低優(yōu)先序的進(jìn)程 ,
L 內(nèi)存鎖頁 Lock 有記憶體分頁分配并縮在記憶體內(nèi) ,
s 進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程),
l 多進(jìn)程的(使用 CLONE_THREAD, 類似 NPTL pthreads)。 )
2.2 列出在內(nèi)存中運(yùn)行的 全部進(jìn)程信息
ps -aux ( ps -aux | grep ***, 列出 *** 進(jìn)程的詳細(xì)信息)
USER :進(jìn)程的所屬用戶,
PID :進(jìn)程的進(jìn)程ID號,
%CPU :進(jìn)程占用的 CPU資源 百分比,
%MEM :進(jìn)程占用的 物理內(nèi)存 百分比,
VSZ :進(jìn)程使用掉的虛擬內(nèi)存量 (Kbytes) ,
RSS :進(jìn)程占用的固定的內(nèi)存量 (Kbytes) ,
TTY :與進(jìn)程相關(guān)聯(lián)的終端(tty),?代表無關(guān),tty1-tty6是本機(jī)上面的登入者程序,pts/0表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
STAT :進(jìn)程的狀態(tài),具體見2.1列出來的部分 ,
START :進(jìn)程開始創(chuàng)建的時間 ,
TIME :進(jìn)程使用的總cpu時間,
COMMAND : 進(jìn)程對應(yīng)的實際程序。
2.3 動態(tài)顯示內(nèi)存中的進(jìn)程信息(top)
四、進(jìn)程的清除
kill -9 -pid (pid通過上面的命令可以查到)
注:有些進(jìn)程是不允許停止的,因為停止會造成系統(tǒng)的不穩(wěn)定,甚至崩潰。(網(wǎng)上搜索進(jìn)程知識了解更多)
五 刪除相關(guān)進(jìn)程
如,要 kill 掉 swoole 相關(guān)的進(jìn)程
ps aux | grep swoole | awk '{print $2}' | xargs kill -9
ps 列出所有進(jìn)程,
參數(shù):
a - 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程,包括其他用戶的進(jìn)程;
u - 以用戶為主的進(jìn)程狀態(tài) ;
x - 通常與 a 這個參數(shù)一起使用,可列出較完整信息。
grep 過濾掉不包含 "swoole" 的行
awk '{print $2}' 獲取進(jìn)程 ID (PID, Process Identification),我們想 kill 掉某一個進(jìn)程的時候需要通過 PID 指定特定進(jìn)程
xargs 將標(biāo)準(zhǔn)輸入數(shù)據(jù)轉(zhuǎn)換成命令行參數(shù),xargs能夠處理管道或者stdin并將其轉(zhuǎn)換成特定命令的命令參數(shù)。
也就是將管道傳遞過來的每一個 PID 作為 kill -9 的參數(shù)