我想干掉Liunx某個(gè)進(jìn)程怎么搞?
如果進(jìn)程在前臺(tái)運(yùn)行,你可以使用 Ctrl+C 終端快捷方式。但是,如果進(jìn)程不可見(在后臺(tái)運(yùn)行),你可以使用專用命令殺死它。
終止進(jìn)程是指在執(zhí)行過程中停止進(jìn)程。如果你知道進(jìn)程ID(PID),則可以使用 kill 命令,如下所示:
>kill
在上面的語(yǔ)法中,signal指的是要發(fā)送終止的終止信號(hào),并且PID指的是進(jìn)程的 ID。
還有一個(gè) killall 命令,我將在本文中討論kill 和 killall 命令。
Linux 中的終止信號(hào)
當(dāng)一個(gè)進(jìn)程被操作系統(tǒng)或用戶終止時(shí),即進(jìn)程沒有自行完成,它會(huì)被發(fā)送一個(gè)終端信號(hào)。
以下是可用的終止信號(hào):
信號(hào) | 數(shù)值 | 描述 |
---|---|---|
SIGHUP | 1 | 信號(hào)掛斷:當(dāng)控制它的終端關(guān)閉時(shí)發(fā)送到進(jìn)程。 |
SIGINT | 2 | 信號(hào)中斷:當(dāng)用戶終止進(jìn)程時(shí)發(fā)送給進(jìn)程的信號(hào).(例如 Ctrl + X) |
SIGKILL | 9 | Signal Kill:立即退出進(jìn)程的信號(hào),不允許它保存當(dāng)前狀態(tài)。 |
SIGTERM | 15 | 信號(hào)終止:發(fā)送到信號(hào)以請(qǐng)求終止進(jìn)程。該信號(hào)可以被進(jìn)程忽略。但這是終止進(jìn)程的首選方式,因?yàn)樗梢栽谶M(jìn)程收到 SIGTERM 時(shí)釋放資源。 |
SIGSTOP | 19 (for x86, ARM and most others) 17 (for Alpha) 23 (for MIPS) 24 (for PARISC) | 停止信號(hào):停止進(jìn)程的信號(hào),但稍后將恢復(fù)。 |
常用的信號(hào) 9 和 15
獲取進(jìn)程的PID
你還需要了解要終止的進(jìn)程的詳細(xì)信息。使用 kill 命令,你必須提供進(jìn)程的 ID(PID)。你可以從進(jìn)程名稱中獲取 PID
>pidofexact_process_name
比如獲取java進(jìn)程的進(jìn)程號(hào)
>pidofjava 80751032
在 Linux 命令行中終止進(jìn)程
使用 kill 命令
該kill命令要求你知道要終止的進(jìn)程的 ID,以及可選的終止信號(hào)。
要簡(jiǎn)單地終止命令,請(qǐng)使用以下語(yǔ)法:
kill[signal]
向 PID 發(fā)送終止信號(hào)是可選的,如果未提供任何信號(hào),則kill默認(rèn)發(fā)送 SIGTERM (15),以正常終止所述進(jìn)程結(jié)束。
我啟動(dòng)了sleep 命令的后臺(tái)進(jìn)程(它給了我一個(gè) PID)。我們使用kill命令殺死它。
殺死這個(gè)特定的實(shí)例sleep如下所示:
$sleep120& [1]125686 $kill125686 [1]+terminatedsleep120
如果我想使用終止信號(hào),我可以使用數(shù)值或信號(hào)本身:
$sleep120& [1]125746 $kill-SIGKILL125746 [1]+killedsleep120 $sleep120& [1]125759 $kill-9125759 [1]+killedsleep120
如果 kill 命令沒有指定信號(hào),則默認(rèn)使用 SIGTERM (15)。
使用 killall 命令
如果不知道某個(gè)進(jìn)程的PID是多少,或者該進(jìn)程有多個(gè)子進(jìn)程,又想一次性殺死子進(jìn)程和父進(jìn)程,可以使用killall命令。
killall[signal]
與kill命令類似,指定終止信號(hào)是可選的。當(dāng)沒有指定終止信號(hào)時(shí),killall將發(fā)送 SIGTERM (15) 以優(yōu)雅地關(guān)閉所述進(jìn)程。
為了演示killall的使用,我將殺死兩個(gè)正在運(yùn)行的 sleep 命令。
$sleep120& [1]112351 $sleep2000& [2]112362 $killallsleep [1]-Terminatedsleep120 [2]+Terminatedsleep2000
此外,你可以使用該-e標(biāo)志來查找進(jìn)程名稱的完全匹配。
使用 pkill 命令
命令的替代命令kill是pkill命令。它是pgrep和kill命令的組合。
killall殺死所有具有匹配名稱的進(jìn)程。另一方面,pkill使用模式匹配來匹配進(jìn)程并殺死它們。
pkill[options]pattern
命令中可用的一些有用選項(xiàng)pkill如下:
-u: 特定所有者擁有的進(jìn)程
-x: 完全匹配模式的進(jìn)程
-signal: 指定終止信號(hào)(默認(rèn)為 SIGTERM)
結(jié)束nginx進(jìn)程
-
Linux
+關(guān)注
關(guān)注
87文章
11229瀏覽量
208927 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6738瀏覽量
123190 -
PID
+關(guān)注
關(guān)注
35文章
1471瀏覽量
85289
原文標(biāo)題:你是怎么在 Linux 干掉進(jìn)程的?
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論