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