天天看點

linux kill 指令kill 指令的用途kill 指令格式kill 指令詳情

kill 指令很容易讓人産生誤解,以為它僅僅就是用來殺死程序的。我們來看一下 man page 對它的解釋:kill - send a signal to a process.

從官方的解釋不難看出,kill 是向程序發送信号的指令。當然我們可以向程序發送一個終止運作的信号,此時的 kill 指令才是名至實歸。事實上如果我們不給 kill 指令傳遞信号參數,它預設傳遞終止程序運作的信号給程序!這是 kill 指令最主要的用法,也是本文要介紹的内容。

一般情況下,終止一個前台程序使用 Ctrl + C 就可以了。對于一個背景程序就須用 kill 指令來終止。我們會先使用 ps、top 等指令獲得程序的 PID,然後使用 kill 指令來殺掉該程序。

既然 kill 指令是用來向程序發送信号的,那就讓我們先來看看都有哪些信号可以發送給程序。

linux kill 指令kill 指令的用途kill 指令格式kill 指令詳情

可不少啊!但這些信号中隻有第 9 種信号(SIGKILL)才可以無條件的終止程序,其他信号程序都有權利忽略。并且這麼多的信号中常用的也不多,下面我們解釋幾個常用信号的含義。

代号

名稱

内容

1       

SIGHUP

啟動被終止的程式,可讓該程序重新讀取自己的配置檔案,類似重新啟動。

2

SIGINT

相當于用鍵盤輸入 [ctrl]-c 來中斷一個程式的進行。

9

SIGKILL

代表強制中斷一個程式的進行,如果該程式進行到一半,那麼尚未完成的部分可能會有“半産品”産生,類似 vim會有 .filename.swp 保留下來。

15

SIGTERM

以正常的方式來終止該程式。由于是正常的終止,是以後續的動作會将他完成。不過,如果該程式已經發生問題,就是無法使用正常的方法終止時,輸入這個 signal 也是沒有用的。

19

SIGSTOP

相當于用鍵盤輸入 [ctrl]-z 來暫停一個程式的進行。

上表僅是常見的信号,更多的信号資訊請自行通過 man 7 signal 了解。一般來說,隻要記住 "1, 9, 15" 這三個信号的意義就可以了。

這條指令發信号讓程序正常退出。所謂的正常退出是指按應用程式自己的退出流程完成退出,這樣就可以清理并釋放資源。比如 vim 程式,如果是正常的退出,就會删除掉臨時檔案 *.swp。

既然信号 15 是退出程序的正确方式,那它也應該是最常用的方式,因而我們可以省略參數 -15。

這條指令和上面的指令是等價的,kill 指令預設發送信号 15 給目标程序。

當程序出現了異常狀況,不能通過信号15正常退出時,我們就需要通過非常的手段直接終結掉程序。所謂的非常手段就是傳遞信号 9 給目标程序!

這樣結束掉的程序不會進行資源的清理工作,是以如果你用它來終結掉 vim 的程序,就會發現臨時檔案 *.swp 沒有被删除。

本文轉自xmgdc51CTO部落格,原文連結:http://blog.51cto.com/12953214/1942278 ,如需轉載請自行聯系原作者

繼續閱讀