kill -9 PID —— 強(qiáng)制殺死一個(gè)進(jìn)程。
創(chuàng)新互聯(lián)建站2013年至今,先為通榆等服務(wù)建站,通榆等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為通榆企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1、kill -9 殺死后臺(tái)運(yùn)行的進(jìn)程。
紅色下劃線:sleep 10000 —— 后臺(tái)運(yùn)行延時(shí) 10000 秒的命令,進(jìn)程 ID 為1317。
黃色下劃線:ps —— 列出 1317 sleep 命令的進(jìn)程。
(PID:進(jìn)程 ID、PGID:線程組 ID、SID:會(huì)話 ID、TTY:進(jìn)程運(yùn)行的終端,標(biāo)識(shí)那個(gè)終端控制。(pts遠(yuǎn)程終端、tty系統(tǒng)終端)、TIME:進(jìn)程運(yùn)行的時(shí)間 和 CMD:命令的名稱和參數(shù))。
jobs -l —— 列出后臺(tái)運(yùn)行的命令,1317 sleep 命令正在后臺(tái)運(yùn)行。
藍(lán)色下劃線:kill -9 1317—— 殺死?1317 進(jìn)程。
綠色方框:ps 查詢進(jìn)程,1317 sleep進(jìn)程已經(jīng)被殺死(Killed)。jobs -l 已經(jīng)沒有后臺(tái)運(yùn)行的1317 sleep 命令。
2、kill -9 終止掛起的進(jìn)程。
紅色下劃線:執(zhí)行 sleep 10000 后 ctrl + z 掛起。
黃色下劃線:ps -j 查看進(jìn)程,有 1342 sleep 的進(jìn)程。jobs -l 查看后臺(tái),1342 sleep 的狀態(tài)是 stopped 暫停狀態(tài)。
藍(lán)色下劃線:kill -9 殺死 1342 進(jìn)程。此時(shí)系統(tǒng)沒有反饋信息。
綠色下劃線:ps -j 查看進(jìn)程,1342 sleep 已經(jīng)被殺死(Killed)。jobs -l 查看后臺(tái),已經(jīng)沒有了? 1342?sleep。
從實(shí)驗(yàn)上看:
1、后臺(tái)命令運(yùn)行時(shí)(Running),執(zhí)行 kill -9 可以強(qiáng)殺進(jìn)程。
2、掛起命令,處于暫停狀態(tài)時(shí)(Stopped),執(zhí)行 kill -9 后通過 ps 查詢進(jìn)程, 可以看到進(jìn)程已經(jīng)被殺死。jobs 也查不到有后臺(tái)命令。(這里和 kill -2、kill -15 不一樣。kill -2、kill -15 在掛起命令,處于暫停狀態(tài)時(shí)(Stopped)時(shí)執(zhí)行,通過 ps 還可以查詢到進(jìn)程,jobs 也可以查詢到后臺(tái)仍有處于暫停狀態(tài)的命令。)
1、首先,連接相應(yīng)linux主機(jī),進(jìn)入到linux命令行狀態(tài)下,等待輸入shell指令。
2、其次,以終止進(jìn)程號(hào)1984的nginx子進(jìn)程為例,在linux命令行中輸入:kill -9 1984。
3、最后,按下回車鍵執(zhí)行shell指令,此時(shí)會(huì)看到進(jìn)程號(hào)1984的nginx子進(jìn)程被成功終止了。
kill 命令通常用于終止執(zhí)行中的程序。 kill可將指定的信息送至程序。默認(rèn)送的信息為SIGTERM (信息編號(hào)為15),代表關(guān)閉進(jìn)程
kill -9 pid kill -15 pid (效果等同于 kill pid )
其中 9 和 15 指的是信息編號(hào)
什么是信息編號(hào)
使用kill -l 命令可以查看信息及編號(hào)
信息編號(hào)代指不同的信息,不同的信息有不同的含義
可以看到 9代表 SIGKILL,15 代表 SIGTERM 所以 ==kill -9 pid 代表 發(fā)送SIGKILL信息給這個(gè)pid的程序 kill -15 pid 代表 發(fā)送SIGTERM信息給這個(gè)pid的程序==
那么 SIGTERM(15)和 SIGKILL(9)有什么區(qū)別
SIGTERM :當(dāng)進(jìn)程接收到SIGTERM后,大多會(huì)先釋放自己的資源,再停止進(jìn)程,屬于正常關(guān)閉進(jìn)程,但是如果進(jìn)程正在工作,處理io等,不會(huì)立馬關(guān)閉,或者 進(jìn)程卡死的情況,都會(huì)導(dǎo)致SIGTERM不起作用。
SIGKILL : SIGKILL信號(hào)要求進(jìn)程 立即關(guān)閉,強(qiáng)制關(guān)閉進(jìn)程。
工作中關(guān)閉進(jìn)程時(shí),==先kill pid(默認(rèn)使用編號(hào)15),如果不起作用 再使用 kill -9 pid。==
查看nginx的pid: ps -ef | grep nginx
可以看到nginx的主進(jìn)程編號(hào) 是 7901
正常關(guān)閉 nginx的主進(jìn)程
kill -15 7901 或者 kill 7901 再次查看nginx的進(jìn)程 發(fā)現(xiàn)已經(jīng)關(guān)閉
啟動(dòng)nginx,查看進(jìn)程號(hào),再強(qiáng)制關(guān)閉 nginx
nginx?
ps -ef | grep nginx? ??
kill -9 9827? ??
ps -ef | grep nginx?
可以看到 kill -9 只是強(qiáng)制關(guān)閉了 nginx的主進(jìn)程,由于不是正常關(guān)閉,worker進(jìn)程并沒有被關(guān)閉,這就是強(qiáng)制關(guān)閉的弊端,再次關(guān)閉worker進(jìn)程 kill -9 9828
1、kill 命令默認(rèn)使用的信息編號(hào)及信息是什么?
:15,代表正常關(guān)閉進(jìn)程
2、kill -9 pid 中 信息編號(hào)9代表什么信息?
:強(qiáng)制關(guān)閉進(jìn)程
3、如何查看kill的信息編號(hào)?
:kill -l
4、寫出正常關(guān)閉 進(jìn)程編號(hào) 為 233 的命令
:kill -15 pid? or? kill pid
5、寫出強(qiáng)制關(guān)閉 進(jìn)程編號(hào) 為 233 的命令
:kill -9 pid
kill -15 PID —— 正常方式終止一個(gè)程序。中斷進(jìn)程時(shí)應(yīng)首先用 -15,以便于其能夠預(yù)先清理臨時(shí)文件和釋放資源。-9?作為最后手段,應(yīng)對(duì)那些失控的進(jìn)程。
1)、kill -15 終止后臺(tái)運(yùn)行的進(jìn)程。
紅色下劃線:sleep 10000 —— 后臺(tái)運(yùn)行延時(shí) 10000 秒的命令,進(jìn)程 ID 為1550。
黃色下劃線:ps -j —— 列出 1550 sleep 命令的進(jìn)程。
(PID:進(jìn)程 ID、PGID:線程組 ID、SID:會(huì)話 ID、TTY:進(jìn)程運(yùn)行的終端,標(biāo)識(shí)那個(gè)終端控制。(pts遠(yuǎn)程終端、tty系統(tǒng)終端)、TIME:進(jìn)程運(yùn)行的時(shí)間 和 CMD:命令的名稱和參數(shù))。
jobs -l —— 列出后臺(tái)運(yùn)行的命令,1550 sleep 命令正在后臺(tái)運(yùn)行。
藍(lán)色下劃線:kill -15 1550—— 終止1550 進(jìn)程。系統(tǒng)反饋?Terminated?終止 1550 進(jìn)程。
綠色方框:ps -j 已查詢不到?1550 sleep 的進(jìn)程。jobs -l 也沒有后臺(tái)運(yùn)行的命令。
2)、kill -15 配合 fg 查看終止掛起的進(jìn)程。
紅色下劃線:sleep 10000 延時(shí) 10000 秒后 ctrl + z 掛起。
黃色下劃線:ps -j 查看進(jìn)程,有 1578 sleep 的進(jìn)程。jobs -l 查看后臺(tái),1578 sleep 的狀態(tài)是 stopped 暫停狀態(tài)。
藍(lán)色下劃線:kill -15 終止 1578 進(jìn)程。此時(shí)系統(tǒng)沒有反饋信息。
綠色下劃線:ps -j 查看進(jìn)程,1578 sleep 進(jìn)程仍在。jobs -l 查看后臺(tái),1578 sleep 的狀態(tài)是 stopped 暫停狀態(tài)。
紅色下劃線:fg 1 把后臺(tái)運(yùn)行的 sleep 調(diào)至前臺(tái)繼續(xù)運(yùn)行。此時(shí),系統(tǒng)首先提示 sleep 已經(jīng)調(diào)至前臺(tái)運(yùn)行,然后又提示?Terminated 終止進(jìn)程。
藍(lán)色下劃線:ps -j 查看進(jìn)程已經(jīng)沒有了 1578 sleep 進(jìn)程。jobs -j 查看也后臺(tái)也沒有命令在執(zhí)行。
3)、kill -15 配合 bg 查看終止掛起的進(jìn)程。
同樣的,首先sleep 10000 后 ctrl + z 掛起。通過 ps -j 查看后臺(tái)進(jìn)程有 1590 sleep進(jìn)程,josb -l 查看后臺(tái)也有狀態(tài)為 stopped? 的1590 sleep 命令。 然后,kill -15 1590 終止 1590 進(jìn)程。再次通過 ps -j 查看1590 sleep進(jìn)程仍在,josb -l 查看后臺(tái)還有狀態(tài)為 stopped? 的1590 sleep 命令。
紅色下劃線:bg 1 把掛起的 sleep 命令繼續(xù)運(yùn)行。此時(shí),系統(tǒng)反饋 sleep 命令在后臺(tái)運(yùn)行。
黃色下劃線:ps -j 查看進(jìn)程,系統(tǒng)反饋 sleep 進(jìn)程已經(jīng)? Terminated? 終止。jobs -l 也查詢不到sleep 在后臺(tái)運(yùn)行。
從實(shí)驗(yàn)上看:
1、后臺(tái)命令運(yùn)行時(shí)(Running),執(zhí)行 kill -15 可以終止進(jìn)程。
2、掛起命令,處于暫停狀態(tài)時(shí)(Stopped),執(zhí)行 kill -15 后通過 ps 還可以查詢到進(jìn)程, jobs還可以查詢到后臺(tái)命令,狀態(tài)仍然是 Stopped 暫停狀態(tài)。用 fg 把暫停的后臺(tái)進(jìn)程調(diào)至前臺(tái)運(yùn)行時(shí),系統(tǒng)反饋一行 sleep 命令調(diào)至前臺(tái)運(yùn)行。跟著一條 Terminated 終止進(jìn)程。再用 ps 查詢不到進(jìn)程。用 jobs 已經(jīng)查詢不到后臺(tái)命令。(這里和 kill -2 不同,kill -2 后用 fg 系統(tǒng)只反饋一行 sleep 命令調(diào)至前臺(tái)運(yùn)行,沒有提示進(jìn)程已中斷。)
3、掛起命令,處于暫停狀態(tài)時(shí)(Stopped),執(zhí)行 kill -15 后通過 ps 還可以查詢到進(jìn)程, jobs還可以查詢到后臺(tái)命令,狀態(tài)仍然是?Stopped 暫停狀態(tài)。用 bg 把暫停的后臺(tái)命令恢復(fù)運(yùn)行時(shí),系統(tǒng)反饋 sleep 命令在后臺(tái)運(yùn)行。再用 ps 查詢進(jìn)程已經(jīng)終止,用 jobs 已經(jīng)查詢不到后臺(tái)命令。(這里和 kill -2一樣)