亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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 這一列表示的是當前打開窗口的進程,1247112472 這兩個 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,還介紹了如何使用 killkillall 結束進程,其中 kill 是通過進程的 PID 來結束掉進程的,killall 可以通過進程名稱來結束掉進程,另外還介紹了如何使用 PID 去查找該應用程序占用的端口號。