Linux 結(jié)束進(jìn)程
前面小節(jié)介紹了如何啟動(dòng)一個(gè)程序進(jìn)程,還介紹了如何查看系統(tǒng)進(jìn)程信息,本小節(jié)來(lái)介紹如何通過(guò) kill
命令結(jié)束進(jìn)程。
1. Linux 進(jìn)程信號(hào)介紹
下面列舉出 Linux 進(jìn)程信號(hào)的描述:
信號(hào) | 名稱 | 描述 |
---|---|---|
1 | HUP | 掛起 |
2 | INT | 中斷 |
3 | QUIT | 結(jié)束運(yùn)行 |
9 | KILL | 無(wú)條件終止 |
11 | SEGV | 段錯(cuò)誤 |
15 | TERM | 盡可能終止 |
17 | STOP | 無(wú)條件停止運(yùn)行,但不終止 |
18 | TSTP | 停止或暫停,但繼續(xù)在后臺(tái)運(yùn)行 |
19 | CONT | 在 STOP 或 TSTP 之后恢復(fù)執(zhí)行 |
2. 查看進(jìn)程的 PID
這里還是以之前啟動(dòng)的 nginx
進(jìn)程為例,使用 ps
查看 nginx
命令如下:
ps -ef | grep nginx
執(zhí)行結(jié)果如下圖:
Tips:如圖所示,可以看到有三條
nginx
相關(guān)信息信息,其中 PID 為12512
這一列表示的是當(dāng)前打開(kāi)窗口的進(jìn)程,12471
和12472
這兩個(gè) PID 無(wú)法直接判斷是否是之前啟動(dòng)nginx
服務(wù)的 PID,下面可以使用端口號(hào)去確認(rèn)進(jìn)程 PID。
3. 端口號(hào)概念
所謂的端口,就好像是門牌號(hào)一樣,客戶端可以通過(guò) ip 地址找到對(duì)應(yīng)的服務(wù)器端,但是服務(wù)器端是有很多端口的,每個(gè)應(yīng)用程序?qū)?yīng)一個(gè)端口號(hào),通過(guò)類似門牌號(hào)的端口號(hào),客戶端才能真正的訪問(wèn)到該服務(wù)器。為了對(duì)端口進(jìn)行區(qū)分,將每個(gè)端口進(jìn)行了編號(hào),這就是端口號(hào) 。
4. 通過(guò)進(jìn)程 PID 查找端口號(hào)
nginx
軟件服務(wù)啟動(dòng)之后默認(rèn)的端口號(hào)是 80
,可以使用如下命通過(guò) PID
查找到端口號(hào),命令如下:
netstat -apn | grep 12471
執(zhí)行結(jié)果如下:
Tips:如圖所示,可以知道進(jìn)程
PID = 12471
這個(gè)進(jìn)程符合nginx
啟動(dòng)的端口號(hào)。
4. kill 結(jié)束進(jìn)程
前面查找到進(jìn)程的 PID
之后,可以使用 kill
命令殺死進(jìn)程,命令如下:
kill -9 12471
ps -ef | grep nginx
執(zhí)行結(jié)果如下圖:
Tips:從圖中可以看到,使用
kill -9
命令之后,可以殺掉PID = 12471
這個(gè)進(jìn)程,12472
屬于12471
的子進(jìn)程,所以也會(huì)被一起殺掉,從前面的表中可以看到-9
表示無(wú)條件終止。
5. killall 結(jié)束進(jìn)程
killall
命令可以直接通過(guò)進(jìn)程相關(guān)的名稱來(lái)結(jié)束進(jìn)程,先啟動(dòng) nginx
服務(wù)之后,然后使用 killall
殺掉 nginx
相關(guān)的進(jìn)程,命令如下:
service nginx start
ps -ef | grep nginx
killall nginx
ps -ef | grep nginx
執(zhí)行結(jié)果如下圖:
Tips:實(shí)際業(yè)務(wù)中
killall
使用時(shí)需要謹(jǐn)慎,防止root
權(quán)限誤操作誤殺其他進(jìn)程。
6. 小結(jié)
本小節(jié)介紹了進(jìn)程通信信號(hào)描述,介紹了如何使用 ps
命令查看進(jìn)程的 PID
,還介紹了如何使用 kill
和 killall
結(jié)束進(jìn)程,其中 kill
是通過(guò)進(jìn)程的 PID
來(lái)結(jié)束掉進(jìn)程的,killall
可以通過(guò)進(jìn)程名稱來(lái)結(jié)束掉進(jìn)程,另外還介紹了如何使用 PID
去查找該應(yīng)用程序占用的端口號(hào)。