kill -15 PID —— 正常方式終止一個(gè)程序。中斷進(jìn)程時(shí)應(yīng)首先用 -15,以便于其能夠預(yù)先清理臨時(shí)文件和釋放資源。-9?作為最后手段,應(yīng)對那些失控的進(jìn)程。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括河北網(wǎng)站建設(shè)、河北網(wǎng)站制作、河北網(wǎng)頁制作以及河北網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,河北網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到河北省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
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)識那個(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一樣)
kill 命令通常用于終止執(zhí)行中的程序。 kill可將指定的信息送至程序。默認(rèn)送的信息為SIGTERM (信息編號為15),代表關(guān)閉進(jìn)程
kill -9 pid kill -15 pid (效果等同于 kill pid )
其中 9 和 15 指的是信息編號
什么是信息編號
使用kill -l 命令可以查看信息及編號
信息編號代指不同的信息,不同的信息有不同的含義
可以看到 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信號要求進(jìn)程 立即關(guān)閉,強(qiáng)制關(guān)閉進(jìn)程。
工作中關(guān)閉進(jìn)程時(shí),==先kill pid(默認(rèn)使用編號15),如果不起作用 再使用 kill -9 pid。==
查看nginx的pid: ps -ef | grep nginx
可以看到nginx的主進(jìn)程編號 是 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)程號,再強(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)使用的信息編號及信息是什么?
:15,代表正常關(guān)閉進(jìn)程
2、kill -9 pid 中 信息編號9代表什么信息?
:強(qiáng)制關(guān)閉進(jìn)程
3、如何查看kill的信息編號?
:kill -l
4、寫出正常關(guān)閉 進(jìn)程編號 為 233 的命令
:kill -15 pid? or? kill pid
5、寫出強(qiáng)制關(guān)閉 進(jìn)程編號 為 233 的命令
:kill -9 pid
kill -9 PID —— 強(qiáng)制殺死一個(gè)進(jìn)程。
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)識那個(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)程號1984的nginx子進(jìn)程為例,在linux命令行中輸入:kill -9 1984。
3、最后,按下回車鍵執(zhí)行shell指令,此時(shí)會(huì)看到進(jìn)程號1984的nginx子進(jìn)程被成功終止了。
首先使用ps -ef命令確定要?dú)⑺肋M(jìn)程的PID,然后輸入以下命令:
# kill -pid
注釋:標(biāo)準(zhǔn)的kill命令通常都能達(dá)到目的。終止有問題的進(jìn)程,并把進(jìn)程的資源釋放給系統(tǒng)。然而,如果進(jìn)程啟動(dòng)了子進(jìn)程,只殺死父進(jìn)程,子進(jìn)程仍在運(yùn)行,因此仍消耗資源。為了防止這些所謂的“僵尸進(jìn)程”,應(yīng)確保在殺死父進(jìn)程之前,先殺死其所有的子進(jìn)程。
*確定要?dú)⑺肋M(jìn)程的PID或PPID
# ps -ef | grep httpd
結(jié)束進(jìn)程
# kill -l PID
-l選項(xiàng)告訴kill命令用好像啟動(dòng)進(jìn)程的用戶已注銷的方式結(jié)束進(jìn)程。當(dāng)使用該選項(xiàng)時(shí),kill命令也試圖殺死所留下的子進(jìn)程。但這個(gè)命令也不是總能成功--或許仍然需要先手工殺死子進(jìn)程,然后再殺死父進(jìn)程。
給父進(jìn)程發(fā)送一個(gè)TERM信號,試圖殺死它和它的子進(jìn)程。
# kill -TERM PPID
*killall命令
killall命令殺死同一進(jìn)程組內(nèi)的所有進(jìn)程。其允許指定要終止的進(jìn)程的名稱,而非PID。
# killall httpd
*停止和重啟進(jìn)程
有時(shí)候只想簡單的停止和重啟進(jìn)程。如下:
# kill -HUP PID
該命令讓Linux和緩的執(zhí)行進(jìn)程關(guān)閉,然后立即重啟。在配置應(yīng)用程序的時(shí)候,這個(gè)命令很方便,在對配置文件修改后需要重啟進(jìn)程時(shí)就可以執(zhí)行此命令。
Linux kill 命令用于終止進(jìn)程,其用法步驟如下:
需要準(zhǔn)備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機(jī),進(jìn)入命令行狀態(tài)。
2、輸入:ps -ef,按回車,查詢進(jìn)程列表。
3、選擇需要終止的進(jìn)程,例如PID為9977的進(jìn)程,則命令行輸入:kill 9977,按回車即可終止該進(jìn)程。