在Linux命令行中終止進(jìn)程的操作命令
如果命令/進(jìn)程在前臺(tái)運(yùn)行,您可以使用 Ctrl+C 終端快捷方式,但是,如果進(jìn)程不可見(在后臺(tái)運(yùn)行),您可以使用專用命令“殺死它”。
“終止進(jìn)程”是指在執(zhí)行過(guò)程中停止進(jìn)程,如果您知道進(jìn)程 ID (PID),則可以使用 kill 命令,如下所示:
kill <signal> <PID>
在上面的語(yǔ)法中,signal指的是要發(fā)送終止的終止信號(hào),并且PID指的是進(jìn)程的 ID。
還有一個(gè) killall 命令,我將在本文中討論kill 和 killall 命令。
在你開始?xì)⑺肋M(jìn)程之前,你應(yīng)該知道一些事情,例如有哪些終止信號(hào)可用,如何找到 PID 等。
讓我們先從信號(hào)開始。
Linux 中的終止信號(hào)
當(dāng)一個(gè)進(jìn)程被操作系統(tǒng)或用戶終止時(shí),即進(jìn)程沒(méi)有自行完成,它會(huì)被發(fā)送一個(gè)終端信號(hào)。
以下是可用的終止信號(hào):
- 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(x86、ARM)、17(Alpha)、23(MIPS)、24(PARISC):信號(hào)停止:停止進(jìn)程但稍后恢復(fù)的信號(hào)。
一般情況會(huì)使用信號(hào) 9 和 15
獲取進(jìn)程的PID
您還需要了解要終止的進(jìn)程的詳細(xì)信息,使用 kill 命令,您必須提供進(jìn)程的 ID (PID),您可以從進(jìn)程名稱中獲取 PID:
pidof exact_process_name
在 Linux 命令行中終止進(jìn)程
讓我們先看看 kill 命令,因?yàn)槟鷮⒈?killall 更多地使用它。
使用 kill 命令
該kill命令要求您知道要終止的進(jìn)程的 ID,以及可選的終止信號(hào)。
要簡(jiǎn)單地終止命令,請(qǐng)使用以下語(yǔ)法:
kill [signal] <PID>
向 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如下所示:
$ sleep 120 & [1] 125686 $ kill 125686 [1] + terminated sleep 120
如果我想使用終止信號(hào),我可以使用數(shù)值或信號(hào)本身:
$ sleep 120 & [1] 125746 $ kill -SIGKILL 125746 [1] + killed sleep 120 ####----##-----#### $ sleep 120 & [1] 125759 $ kill -9 125759 [1] + killed sleep 120
如果 kill 命令沒(méi)有指定信號(hào),則默認(rèn)使用 SIGTERM (15)。
使用 killall 命令
如果不知道某個(gè)進(jìn)程的PID是多少,或者該進(jìn)程有多個(gè)子進(jìn)程,又想一次性殺死子進(jìn)程和父進(jìn)程,可以使用killall命令。
killall [signal] <process-name>
與kill命令類似,指定終止信號(hào)是可選的,當(dāng)沒(méi)有指定終止信號(hào)時(shí),killall將發(fā)送 SIGTERM ( 15) 以優(yōu)雅地關(guān)閉所述進(jìn)程。
為了演示 的使用killall,我想殺死兩個(gè)正在運(yùn)行的 sleep 命令。
$ sleep 120 & [1] 18609 $ sleep 2000 & [2] 18612 $ killall sleep [1]- Terminated sleep 120 [2]+ Terminated sleep 2000
此外,您可以使用該-e標(biāo)志來(lái)查找進(jìn)程名稱的完全匹配。
使用 pkill 命令
命令的替代命令kill是pkill命令,它是pgrep和kill命令的“組合”。
killall殺死所有具有匹配名稱的進(jìn)程。另一方面,pkill使用模式匹配來(lái)匹配進(jìn)程并殺死它們。
下面是語(yǔ)法:
pkill [options] pattern
命令中可用的一些有用選項(xiàng)pkill如下:
-u
: 特定所有者擁有的進(jìn)程-x
: 完全匹配模式的進(jìn)程-signal
: 指定終止信號(hào)(默認(rèn)為 SIGTERM)
假設(shè)我的guest計(jì)算機(jī)上有一個(gè)用戶當(dāng)前不應(yīng)該運(yùn)行任何進(jìn)程,如果有,我想終止它們,我怎樣才能做到這一點(diǎn)?
$ 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
請(qǐng)注意,我使用sudo的是因?yàn)槲艺谔幚聿粚儆谖业挠脩舻倪M(jìn)程。
以上就是在Linux命令行中終止進(jìn)程的操作命令的詳細(xì)內(nèi)容,更多關(guān)于Linux命令行中終止進(jìn)程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器,本文使用expect來(lái)實(shí)現(xiàn)這個(gè)需求,講解了expect的安裝及使用腳本,需要的朋友可以參考下2015-03-03Shell腳本從文件中逐行讀取內(nèi)容的幾種方法實(shí)例
今天小編就為大家分享一篇關(guān)于Shell腳本從文件中逐行讀取內(nèi)容的幾種方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享
這篇文章主要介紹了Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享,本文共給出了4種方法實(shí)現(xiàn)系統(tǒng)位數(shù)在判斷,需要的朋友可以參考下2014-12-12實(shí)現(xiàn)批量linux格式化硬盤和掛載硬盤腳本分享
這篇文章主要介紹了實(shí)現(xiàn)批量linux格式化硬盤和掛載硬盤的腳本,需要的朋友可以參考下2014-03-03Shell腳本查看進(jìn)程內(nèi)存真實(shí)占用情況
這篇文章主要介紹了Shell腳本查看進(jìn)程內(nèi)存真實(shí)占用情況,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12shell命令while循環(huán)中使用sleep命令代碼示例
這篇文章主要介紹了shell命令while循環(huán)中使用sleep命令代碼示例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02使用Linux shell腳本實(shí)現(xiàn)FTP定時(shí)執(zhí)行批量下載指定文件
使用FTP定時(shí)批量下載指定文件的shell腳本,具體實(shí)例介紹如下所示,需要的朋友參考下吧2017-04-04