在Linux命令行中終止進程的操作命令
如果命令/進程在前臺運行,您可以使用 Ctrl+C 終端快捷方式,但是,如果進程不可見(在后臺運行),您可以使用專用命令“殺死它”。
“終止進程”是指在執(zhí)行過程中停止進程,如果您知道進程 ID (PID),則可以使用 kill 命令,如下所示:
kill <signal> <PID>
在上面的語法中,signal指的是要發(fā)送終止的終止信號,并且PID指的是進程的 ID。
還有一個 killall 命令,我將在本文中討論kill 和 killall 命令。
在你開始殺死進程之前,你應(yīng)該知道一些事情,例如有哪些終止信號可用,如何找到 PID 等。
讓我們先從信號開始。
Linux 中的終止信號
當(dāng)一個進程被操作系統(tǒng)或用戶終止時,即進程沒有自行完成,它會被發(fā)送一個終端信號。
以下是可用的終止信號:
- SIGHUP:
- 1:信號掛斷:當(dāng)控制它的終端關(guān)閉時發(fā)送到進程。
- SIGINT:
- 2:信號中斷:當(dāng)用戶終止進程時發(fā)送給進程的信號。(例如 Ctrl + X)
- SIGKILL:
- 9:Signal Kill:立即退出進程的信號,不允許它保存當(dāng)前狀態(tài)。
- SIGTERM:
- 15:信號終止:發(fā)送到信號以請求終止進程。該信號可以被進程忽略。但這是終止進程的首選方式,因為它可以在進程收到 SIGTERM 時釋放資源。
- SIGSTOP:
- 19(x86、ARM)、17(Alpha)、23(MIPS)、24(PARISC):信號停止:停止進程但稍后恢復(fù)的信號。
一般情況會使用信號 9 和 15
獲取進程的PID
您還需要了解要終止的進程的詳細信息,使用 kill 命令,您必須提供進程的 ID (PID),您可以從進程名稱中獲取 PID:
pidof exact_process_name
在 Linux 命令行中終止進程
讓我們先看看 kill 命令,因為您將比 killall 更多地使用它。
使用 kill 命令
該kill命令要求您知道要終止的進程的 ID,以及可選的終止信號。
要簡單地終止命令,請使用以下語法:
kill [signal] <PID>
向 PID 發(fā)送終止信號是可選的,如果未提供任何信號,則kill默認(rèn)發(fā)送 SIGTERM ( 15),以正常終止所述進程結(jié)束。
我啟動了sleep 命令的后臺進程(它給了我一個 PID),讓我們嘗試使用kill命令殺死它。
殺死這個特定的實例sleep如下所示:
$ sleep 120 & [1] 125686 $ kill 125686 [1] + terminated sleep 120
如果我想使用終止信號,我可以使用數(shù)值或信號本身:
$ sleep 120 & [1] 125746 $ kill -SIGKILL 125746 [1] + killed sleep 120 ####----##-----#### $ sleep 120 & [1] 125759 $ kill -9 125759 [1] + killed sleep 120
如果 kill 命令沒有指定信號,則默認(rèn)使用 SIGTERM (15)。
使用 killall 命令
如果不知道某個進程的PID是多少,或者該進程有多個子進程,又想一次性殺死子進程和父進程,可以使用killall命令。
killall [signal] <process-name>
與kill命令類似,指定終止信號是可選的,當(dāng)沒有指定終止信號時,killall將發(fā)送 SIGTERM ( 15) 以優(yōu)雅地關(guān)閉所述進程。
為了演示 的使用killall,我想殺死兩個正在運行的 sleep 命令。
$ sleep 120 & [1] 18609 $ sleep 2000 & [2] 18612 $ killall sleep [1]- Terminated sleep 120 [2]+ Terminated sleep 2000
此外,您可以使用該-e標(biāo)志來查找進程名稱的完全匹配。
使用 pkill 命令
命令的替代命令kill是pkill命令,它是pgrep和kill命令的“組合”。
killall殺死所有具有匹配名稱的進程。另一方面,pkill使用模式匹配來匹配進程并殺死它們。
下面是語法:
pkill [options] pattern
命令中可用的一些有用選項pkill如下:
-u
: 特定所有者擁有的進程-x
: 完全匹配模式的進程-signal
: 指定終止信號(默認(rèn)為 SIGTERM)
假設(shè)我的guest計算機上有一個用戶當(dāng)前不應(yīng)該運行任何進程,如果有,我想終止它們,我怎樣才能做到這一點?
$ ps aux | grep sleep guest 126061 0.0 0.0 6664 428 pts/3 S 10:14 0:00 sleep 50 $ sudo pkill -u guest
請注意,我使用sudo的是因為我正在處理不屬于我的用戶的進程。
以上就是在Linux命令行中終止進程的操作命令的詳細內(nèi)容,更多關(guān)于Linux命令行中終止進程的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Shell腳本實現(xiàn)自動輸入密碼登錄服務(wù)器
這篇文章主要介紹了Shell腳本實現(xiàn)自動輸入密碼登錄服務(wù)器,本文使用expect來實現(xiàn)這個需求,講解了expect的安裝及使用腳本,需要的朋友可以參考下2015-03-03Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享
這篇文章主要介紹了Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享,本文共給出了4種方法實現(xiàn)系統(tǒng)位數(shù)在判斷,需要的朋友可以參考下2014-12-12shell命令while循環(huán)中使用sleep命令代碼示例
這篇文章主要介紹了shell命令while循環(huán)中使用sleep命令代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件
使用FTP定時批量下載指定文件的shell腳本,具體實例介紹如下所示,需要的朋友參考下吧2017-04-04