linux kill命令使用場景:當需要中斷一個前臺進程的時候,通常是使用 Ctrl+c 組合鍵;但是對于一個后臺進程恐怕就不是一個組合鍵所能解決的了,這時就必須求助于kill命令。
目前成都創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、旬陽網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
kill命令是通過向進程發(fā)送指定的信號來結(jié)束進程的。如果沒有指定發(fā)送信號,那么默認值為TERM信號。TERM信號將終止所有不能捕獲該信號的進程。至于那些可以捕獲該信號的進程可能就需要使用kill(9)信號了,該信號是不能被捕捉的。
kill命令的語法:
kill [-s 信號 | -p ] [ -a ] 進程號
kill -l [信號]
說明:-s 指定需要送出的信號。既可以是信號名也可以對應(yīng)數(shù)字。
? -p 指定kill命令只是顯示進程的pid,并不真正送出結(jié)束信號。
-l 顯示信號名稱列表,這也可以在/usr/include/linux/signal.h文件中找到。
kill命令的使用:
[舉例] 在執(zhí)行一條find指令時由于時間過長,決定終止該進程。
首先應(yīng)該使用ps命令來查看該進程對應(yīng)的PID,鍵入ps,顯示如下:
PID TTY TIME COMMAND
285 1 00:00:00 -bash
287 3 00:00:00 -bash
289 5 00:00:00 /sbin/mingetty tty5
290 6 00:00:00 /sbin/mingetty tty6
312 3 00:00:00 telnet bbs3
341 4 00:00:00 /sbin/mingetty tty4
345 1 00:00:00 find / -name foxy.jpg
348 1 00:00:00 ps
可以看到該進程對應(yīng)的PID是345,現(xiàn)在使用kill命令來終止該進程。鍵入:
# kill 345
再用ps命令查看,就可以看到,find進程已經(jīng)被殺掉了。
1、首先,連接相應(yīng)linux主機,進入到linux命令行狀態(tài)下,等待輸入shell指令。
2、其次,以終止進程號1984的nginx子進程為例,在linux命令行中輸入:kill -9 1984。
3、最后,按下回車鍵執(zhí)行shell指令,此時會看到進程號1984的nginx子進程被成功終止了。
kill 命令通常用于終止執(zhí)行中的程序。 kill可將指定的信息送至程序。默認送的信息為SIGTERM (信息編號為15),代表關(guān)閉進程
kill -9 pid kill -15 pid (效果等同于 kill pid )
其中 9 和 15 指的是信息編號
什么是信息編號
使用kill -l 命令可以查看信息及編號
信息編號代指不同的信息,不同的信息有不同的含義
可以看到 9代表 SIGKILL,15 代表 SIGTERM 所以 ==kill -9 pid 代表 發(fā)送SIGKILL信息給這個pid的程序 kill -15 pid 代表 發(fā)送SIGTERM信息給這個pid的程序==
那么 SIGTERM(15)和 SIGKILL(9)有什么區(qū)別
SIGTERM :當進程接收到SIGTERM后,大多會先釋放自己的資源,再停止進程,屬于正常關(guān)閉進程,但是如果進程正在工作,處理io等,不會立馬關(guān)閉,或者 進程卡死的情況,都會導(dǎo)致SIGTERM不起作用。
SIGKILL : SIGKILL信號要求進程 立即關(guān)閉,強制關(guān)閉進程。
工作中關(guān)閉進程時,==先kill pid(默認使用編號15),如果不起作用 再使用 kill -9 pid。==
查看nginx的pid: ps -ef | grep nginx
可以看到nginx的主進程編號 是 7901
正常關(guān)閉 nginx的主進程
kill -15 7901 或者 kill 7901 再次查看nginx的進程 發(fā)現(xiàn)已經(jīng)關(guān)閉
啟動nginx,查看進程號,再強制關(guān)閉 nginx
nginx?
ps -ef | grep nginx? ??
kill -9 9827? ??
ps -ef | grep nginx?
可以看到 kill -9 只是強制關(guān)閉了 nginx的主進程,由于不是正常關(guān)閉,worker進程并沒有被關(guān)閉,這就是強制關(guān)閉的弊端,再次關(guān)閉worker進程 kill -9 9828
1、kill 命令默認使用的信息編號及信息是什么?
:15,代表正常關(guān)閉進程
2、kill -9 pid 中 信息編號9代表什么信息?
:強制關(guān)閉進程
3、如何查看kill的信息編號?
:kill -l
4、寫出正常關(guān)閉 進程編號 為 233 的命令
:kill -15 pid? or? kill pid
5、寫出強制關(guān)閉 進程編號 為 233 的命令
:kill -9 pid