linux kill命令詳解
kill 命令的用途
kill 命令很容易讓人產(chǎn)生誤解,以為它僅僅就是用來終止進(jìn)程的。我們來看一下 man page 對它的解釋:kill - send a signal to a process.
從官方的解釋不難看出,kill 是向進(jìn)程發(fā)送信號的命令。當(dāng)然我們可以向進(jìn)程發(fā)送一個終止運行的信號,此時的 kill 命令才是名至實歸。事實上如果我們不給 kill 命令傳遞信號參數(shù),它默認(rèn)傳遞終止進(jìn)程運行的信號給進(jìn)程!這是 kill 命令最主要的用法,也是本文要介紹的內(nèi)容。
一般情況下,終止一個前臺進(jìn)程使用 Ctrl + C 就可以了。對于一個后臺進(jìn)程就須用 kill 命令來終止。我們會先使用 ps、top 等命令獲得進(jìn)程的 PID,然后使用 kill 命令來殺掉該進(jìn)程。
kill 命令格式
kill [options] <pid> [...] <pid> […] : 把信號發(fā)送給列出的所有進(jìn)程。 options : -<signal> : 指定發(fā)送給進(jìn)程的信號,指定信號的名稱或號碼都可以。 -l : 列出所有信號的名稱和號碼。
kill 命令詳情
查看可用信號
既然 kill 命令是用來向進(jìn)程發(fā)送信號的,那就讓我們先來看看都有哪些信號可以發(fā)送給進(jìn)程。
$ kill -l

可不少??!但這些信號中只有第 9 種信號(SIGKILL)才可以無條件的終止進(jìn)程,其他信號進(jìn)程都有權(quán)利忽略。并且這么多的信號中常用的也不多,下面我們解釋幾個常用信號的含義。
| 代號 | 名稱 | 內(nèi)容 |
| 1 | SIGHUP | 啟動被終止的程序,可讓該進(jìn)程重新讀取自己的配置文件,類似重新啟動。 |
| 2 | SIGINT | 相當(dāng)于用鍵盤輸入 [ctrl]-c 來中斷一個程序的進(jìn)行。 |
| 9 | SIGKILL | 代表強(qiáng)制中斷一個程序的進(jìn)行,如果該程序進(jìn)行到一半,那么尚未完成的部分可能會有“半產(chǎn)品”產(chǎn)生,類似 vim會有 .filename.swp 保留下來。 |
| 15 | SIGTERM | 以正常的方式來終止該程序。由于是正常的終止,所以后續(xù)的動作會將他完成。不過,如果該程序已經(jīng)發(fā)生問題,就是無法使用正常的方法終止時,輸入這個 signal 也是沒有用的。 |
| 19 | SIGSTOP | 相當(dāng)于用鍵盤輸入 [ctrl]-z 來暫停一個程序的進(jìn)行。 |
上表僅是常見的信號,更多的信號信息請自行通過 man 7 signal 了解。一般來說,只要記住 "1, 9, 15" 這三個信號的意義就可以了。
常用命令
$ kill -15 pid
這條命令發(fā)信號讓進(jìn)程正常退出。所謂的正常退出是指按應(yīng)用程序自己的退出流程完成退出,這樣就可以清理并釋放資源。比如 vim 程序,如果是正常的退出,就會刪除掉臨時文件 *.swp。
既然信號 15 是退出進(jìn)程的正確方式,那它也應(yīng)該是最常用的方式,因而我們可以省略參數(shù) -15。
$ kill pid
這條命令和上面的命令是等價的,kill 命令默認(rèn)發(fā)送信號 15 給目標(biāo)進(jìn)程。
當(dāng)進(jìn)程出現(xiàn)了異常狀況,不能通過信號15正常退出時,我們就需要通過非常的手段直接終結(jié)掉進(jìn)程。所謂的非常手段就是傳遞信號 9 給目標(biāo)進(jìn)程!
$ kill -9 pid
這樣結(jié)束掉的進(jìn)程不會進(jìn)行資源的清理工作,所以如果你用它來終結(jié)掉 vim 的進(jìn)程,就會發(fā)現(xiàn)臨時文件 *.swp 沒有被刪除。
總結(jié)
使用信號 15 是安全的,而信號 9 則是處理異常進(jìn)程的最后手段,請勿濫用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇
本篇文章主要介紹了centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12
linux 上在指定時間段內(nèi)每隔多少分鐘自動執(zhí)行任務(wù)計劃crontab
這篇文章主要介紹了linux 上在指定時間段內(nèi)每隔多少分鐘自動執(zhí)行任務(wù)計劃crontab,需要的朋友可以參考下2019-11-11
Linxu下性能指標(biāo)采集工具之nmon工具的使用
Linux下查看CPU信息一般采用top命令來實時觀察,但是這種對于只是通過觀察數(shù)據(jù)的變化來評估cpu的實時情況顯然不太科學(xué)。如果想要通過圖標(biāo)的形式來表現(xiàn)則需要借助一些外部工具,今天就來講解一下nmon工具的使用2023-04-04
Linux服務(wù)器VPS的Windows?DD包詳細(xì)的制作教程
這里就說下Windows?dd包的制作過程,雖然網(wǎng)上很多這樣的dd包,但對于一些來歷不明的,也會有點不放心,所以我們有時間的話可以自己定制一個2022-08-08
Xshell遠(yuǎn)程連接linux詳細(xì)步驟(小白必備)
本文主要介紹了Xshell遠(yuǎn)程連接linux詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
centos7.2搭建LAMP環(huán)境的具體操作方法
下面小編就為大家?guī)硪黄猚entos7.2搭建LAMP環(huán)境的具體操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

