學(xué)習(xí)內(nèi)容
程相關(guān): ps, kill
個人總結(jié)
進(jìn)程描述
** 進(jìn)程** :當(dāng)我們運(yùn)行程序時,Linux 會為程序創(chuàng)建一個特殊的環(huán)境嗜诀,該環(huán)境包含程序運(yùn)行需要的所有資源笤休,以保證程序能夠獨(dú)立運(yùn)行,不受其他程序干擾惶看。這個特殊的環(huán)境就是進(jìn)程筛圆。
舉例:每個 Linux 命令都與系統(tǒng)中的程序?qū)?yīng)裂明,輸入命令,Linux就會創(chuàng)建UI個進(jìn)程太援。簡單的說闽晦,進(jìn)程就是程序?qū)嵗?/strong>。Linux 系統(tǒng)通過一個五位數(shù)字跟蹤程序的運(yùn)行狀態(tài)提岔,這個數(shù)字稱為 PID(程序狀態(tài)字)仙蛉,用來記錄當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)。
相關(guān)命令
-
ps
ps
查看當(dāng)前正在運(yùn)行的進(jìn)程
ps -f
查看當(dāng)前正在運(yùn)行的進(jìn)程的詳細(xì)信息
ps -a
顯示所有用戶的所有進(jìn)程
ps -x
顯示無終端的進(jìn)程碱蒙。
ps -u
顯示更多信息荠瘪,類似于 -f 選項(xiàng)。
ps -e
顯示所有進(jìn)程。
? ~ ps
PID TTY TIME CMD
20348 pts/23 00:00:00 zsh
20741 pts/23 00:00:00 ps
? ~ ps -f
UID PID PPID C STIME TTY TIME CMD
zhyingj+ 20348 4905 0 21:47 pts/23 00:00:00 zsh
zhyingj+ 20751 20348 0 21:50 pts/23 00:00:00 ps -f
字段說明:
UID 進(jìn)程所屬用戶的ID哀墓,即哪個用戶創(chuàng)建了該進(jìn)程鞭莽。
PID 進(jìn)程ID。
PPID 父進(jìn)程ID麸祷,創(chuàng)建該進(jìn)程的進(jìn)程稱為父進(jìn)程。
C CPU使用率褒搔。
STIME 進(jìn)程被創(chuàng)建的時間阶牍。
TTY 與進(jìn)程有關(guān)的終端類型。
TIME 進(jìn)程所使用的CPU時間星瘾。
CMD 創(chuàng)建該進(jìn)程的命令走孽。
-
kill
kill [參數(shù)]<進(jìn)程號>
殺死指定進(jìn)程號的進(jìn)程
命令功能:
發(fā)送指定的信號到相應(yīng)進(jìn)程。不指定型號將發(fā)送SIGTERM(15)終止指定進(jìn)程琳状。如果任無法終止該程序可用“-KILL” 參數(shù)磕瓷,其發(fā)送的信號為SIGKILL(9) ,將強(qiáng)制結(jié)束進(jìn)程念逞,使用ps命令或者jobs 命令可以查看進(jìn)程號困食。root用戶將影響用戶的進(jìn)程,非root用戶只能影響自己的進(jìn)程翎承。
參數(shù)說明:
-l
信號硕盹,若果不加信號的編號參數(shù),則使用“-l”參數(shù)會列出全部的信號名稱
-a
當(dāng)處理當(dāng)前進(jìn)程時叨咖,不限制命令名和進(jìn)程號的對應(yīng)關(guān)系
-p
指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號瘩例,而不發(fā)送任何信號
-s
指定發(fā)送信號
-u
指定用戶
? ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
信號說明:
只有第9種信號(SIGKILL)才可以無條件終止進(jìn)程,其他信號進(jìn)程都有權(quán)利忽略甸各。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強(qiáng)制終止
CONT 18 繼續(xù)(與STOP相反垛贤, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
使用:
1.列出所有信號 kill -l
? ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
2.得到指定信號數(shù)值
? ~ kill -l kill
9
? ~ kill -l INT
2
3.先用 ps 查找進(jìn)程,然后 kill 掉
? ~ ps -ef|grep vim
zhyingj+ 23111 22309 0 22:34 pts/26 00:00:00 vim text.txt
zhyingj+ 23501 23112 0 22:36 pts/27 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn vim
? ~ kill 23111 //殺死
? ~ kill 23111
kill: kill 23111 failed: no such process
4.強(qiáng)制殺死指定進(jìn)程kill -9 PID
? ~ ps -ef|grep vim
zhyingj+ 23556 22309 0 22:39 pts/26 00:00:00 vim text.txt
zhyingj+ 23560 23112 0 22:39 pts/27 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn vim
? ~ kill -9 23556
? ~ kill -9 23556
kill: kill 23556 failed: no such process
5.殺死指定用戶所有進(jìn)程
命令:
kill -9 $(ps -ef | grep peidalinux)
kill -u peidalinux