Linux kill 命令用于終止進程,其用法步驟如下:
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)桐鄉(xiāng),10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
需要準(zhǔn)備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機,進入命令行狀態(tài)。
2、輸入:ps -ef,按回車,查詢進程列表。
3、選擇需要終止的進程,例如PID為9977的進程,則命令行輸入:kill 9977,按回車即可終止該進程。
kill 命令通常用于終止執(zhí)行中的程序。 kill可將指定的信息送至程序。默認(rèn)送的信息為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 :當(dāng)進程接收到SIGTERM后,大多會先釋放自己的資源,再停止進程,屬于正常關(guān)閉進程,但是如果進程正在工作,處理io等,不會立馬關(guān)閉,或者 進程卡死的情況,都會導(dǎo)致SIGTERM不起作用。
SIGKILL : SIGKILL信號要求進程 立即關(guān)閉,強制關(guān)閉進程。
工作中關(guān)閉進程時,==先kill pid(默認(rèn)使用編號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 命令默認(rèn)使用的信息編號及信息是什么?
: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
具體操作步驟如下:
1、首先打開linux終端,運行一段Python程序:
2、然后在程序運行中,需要終止程序運行時,按下快捷鍵crtl+c就可以終止指令程序,此時運行的這段python程序就被終止了。所有的指令都可以用這個快捷鍵終止運行:
3、最后再次運行一下剛才的程序,這里直接使用Ctrl+ Z快捷鍵終止運行程序是可以達到同樣的效果的:
linux 任務(wù)管理-后臺運行與終止
fg、bg、jobs、、ctrl + z命令
一、
加在一個命令的最后,可以把這個命令放到后臺執(zhí)行 ,如gftp ,
二、ctrl + z
可以將一個正在前臺執(zhí)行的命令放到后臺,并且處于暫停狀態(tài),不可執(zhí)行
三、jobs
查看當(dāng)前有多少在后臺運行的命令
jobs
-l選項可顯示所有任務(wù)的PID,jobs的狀態(tài)可以是running, stopped,
Terminated,但是如果任務(wù)被終止了(kill),shell
從當(dāng)前的shell環(huán)境已知的列表中刪除任務(wù)的進程標(biāo)識;也就是說,jobs命令顯示的是當(dāng)前shell環(huán)境中所起的后臺正在運行或者被掛起的任務(wù)信息;
四、fg
將后臺中的命令調(diào)至前臺繼續(xù)運行
如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
五、bg
將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行 (在后臺執(zhí)行)
如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
將任務(wù)轉(zhuǎn)移到后臺運行:
先ctrl + z;再bg,這樣進程就被移到后臺運行,終端還能繼續(xù)接受命令。
概念:當(dāng)前任務(wù)
如
果后臺的任務(wù)號有2個,[1],[2];如果當(dāng)?shù)谝粋€后臺任務(wù)順利執(zhí)行完畢,第二個后臺任務(wù)還在執(zhí)行中時,當(dāng)前任務(wù)便會自動變成后臺任務(wù)號碼“[2]”
的后臺任務(wù)。所以可以得出一點,即當(dāng)前任務(wù)是會變動的。當(dāng)用戶輸入“fg”、“bg”和“stop”等命令時,如果不加任何引號,則所變動的均是當(dāng)前任務(wù)
進程的終止
后臺進程的終止:
方法一:
通過jobs命令查看job號(假設(shè)為num),然后執(zhí)行kill %num
方法二:
通過ps命令查看job的進程號(PID,假設(shè)為pid),然后執(zhí)行kill pid
前臺進程的終止:
ctrl+c
kill的其他作用
kill除了可以終止進程,還能給進程發(fā)送其它信號,使用kill -l 可以察看kill支持的信號。
SIGTERM是不帶參數(shù)時kill發(fā)送的信號,意思是要進程終止運行,但執(zhí)行與否還得看進程是否支持。如果進程還沒有終止,可以使用kill -SIGKILL pid,這是由內(nèi)核來終止進程,進程不能監(jiān)聽這個信號。
進程的掛起
后臺進程的掛起:
在solaris中通過stop命令執(zhí)行,通過jobs命令查看job號(假設(shè)為num),然后執(zhí)行stop %num;
在redhat中,不存在stop命令,可通過執(zhí)行命令kill -stop PID,將進程掛起;
當(dāng)要重新執(zhí)行當(dāng)前被掛起的任務(wù)時,通過bg %num 即可將掛起的job的狀態(tài)由stopped改為running,仍在后臺執(zhí)行;當(dāng)需要改為在前臺執(zhí)行時,執(zhí)行命令fg %num即可;
前臺進程的掛起:
ctrl+Z;