大多數情況下,您希望程序以自己的方式結束,或者如果它是圖形應用程序,則使用相應的菜單選項或使用角落中的十字。
每隔一段時間程序就會掛起,在這種情況下,你需要一種方法來殺死它。 您可能還想殺死一個正在後台運行的程序,您不再需要運行該程序。
本指南提供了一種方法來殺死系統上運行的相同應用程序的所有版本。
如何使用killall命令
killall命令按名稱殺死所有進程。 這意味著如果你有三個版本的同一個程序運行killall命令將會全部殺死所有三個。
例如,打開一個小程序,如圖像查看器。 現在打開相同圖像查看器的另一個副本。 對於我的例子,我選擇了Xviewer,它是侏儒之眼的克隆。
現在打開一個終端並輸入以下命令:
全殺
例如,要殺死Xviewer的所有實例,請鍵入以下內容:
killall xviewer
您選擇殺死的程序的兩個實例現在都會關閉。
殺死精確過程
killall可能會產生奇怪的結果。 那麼這裡有一個原因。 如果您的命令名長度超過15個字符,那麼killall命令只能處理前15個字符。 因此,如果您有兩個共享前15個字符的程序,即使您只想殺一個,程序也會被取消。
為了解決這個問題,你可以指定下面的開關,它只會殺死匹配確切名稱的文件。
killall -e
忽略殺傷程序時的情況
要確保killall命令忽略您提供的程序名稱的大小寫,請使用以下命令:
killall - 我
killall --ignore-case
終止同一組中的所有程序
當你運行一個如下的命令時,它將創建兩個進程:
ps -ef | 減
一個命令用於ps -ef部分,其中列出了系統上正在運行的所有進程,並將輸出傳遞給less命令 。
這兩個程序都屬於同一個組,即bash。
要同時殺死這兩個程序,您可以運行以下命令:
killall -g
例如,要終止在bash shell中運行的所有命令,請運行以下命令:
killall -g bash
順便列出所有正在運行的組運行以下命令:
ps -g
在殺死程序之前獲得確認
顯然,killall命令是一個非常強大的命令,你不想意外地殺死錯誤的進程。
使用下面的開關,你會被問到在每個過程被殺之前你是否確定。
killall -i
殺死已經運行了一段時間的進程
想像一下,你一直在運行一個程序,並且花費的時間比你期望的要長。
您可以通過以下方式殺死該命令:
killall -o h4
上述命令中的h代表幾小時。
您還可以指定以下任何一項:
- 秒 - 秒
- 米 - 分鐘
- 小時
- d - 天
- w - 週
- M - 月
- 年 - 年
或者,如果您希望殺死剛剛開始運行的命令,則可以使用以下開關:
killall -y h4
這一次killall命令將殺死所有運行時間少於4小時的程序。
當一個進程沒有被終止時,不要告訴我
默認情況下,如果您嘗試並殺死未運行的程序,您將收到以下錯誤:
程序名稱:找不到過程
如果您不想告訴過程是否未找到,請使用以下命令:
killall -q
使用正則表達式
您可以指定正則表達式,而不是指定程序或命令的名稱,以便所有與正則表達式匹配的進程都由killall命令關閉。
要使用正則表達式,請使用以下命令:
killall -r
殺死指定用戶的程序
如果要殺死特定用戶正在運行的程序,可以指定以下命令:
killall -u
如果你想殺死一個特定用戶的所有進程,你可以省略程序名稱。
等待killall完成
默認情況下,killall會在運行時直接返回到終端,但您可以強制killall等待,直到指定的所有進程都已關閉,然後再返回到終端窗口。
為此,運行以下命令:
killall -w
如果節目永不消逝,那麼killall也將繼續生存下去。
信號信號信號
默認情況下,killall命令將SIGTERM信號發送給程序以使其關閉,這是殺死程序的最乾淨的方法。
然而,您可以使用killall命令發送其他信號,您可以使用以下命令列出它們:
killall -l
返回的列表將如下所示:
- HUP
- INT
- 放棄
- 生病
- 陷阱
- ABRT
- IOT
- 總線
- FPE
- 殺
- USR1
- SEGV
- USR2
- 管
- ALRM
- 術語
- STKFLT
- CHLD
- CONT
- 停
- 三偏磷酸鈉
- TTIN
- TTOU
- URG
- XCPU
- XFSZ
- VTALRM
- PROG
- WYNCH
- IO
- PWR
- SYS
- 沒用過
這份名單非常長。 要閱讀這些信號意味著什麼運行以下命令:
男子7號信號
一般來說,你應該使用默認的SIGTERM選項,但是如果程序拒絕死機,你可以使用SIGKILL來強製程序關閉,儘管這種方式沒有尊嚴。
其他殺死程序的方法
如鍊接指南中突出顯示的,還有其他五種殺死Linux應用程序的方法 。
然而,為了節省您點擊鏈接的努力,這裡是一個部分,顯示這些命令是為什麼您可以通過killall使用這些命令。
第一個是kill命令。 你所看到的killall命令非常適合殺死同一個程序的所有版本。 kill命令旨在一次殺死一個進程,因此更有針對性。
要運行kill命令,您需要知道要殺死的進程的進程ID。 為此,您可以使用ps命令 。
例如,要查找運行的Firefox版本,可以運行以下命令:
ps -ef | grep firefox
您將在末尾看到帶有命令/ usr / lib / firefox / firefox的一行數據。 在該行的開頭,您將看到您的用戶ID和用戶ID是進程ID後的編號。
使用進程ID可以通過運行以下命令來殺死Firefox:
kill -9
殺死程序的另一種方法是使用xkill命令。 這通常用於殺死行為不當的圖形應用程序。
要殺死Firefox等程序,請打開終端並運行以下命令:
xkill
光標現在會變成一個大的白色十字。 將鼠標懸停在希望殺死的窗口上,然後用鼠標左鍵點擊。 該程序將立即退出。
殺死進程的另一種方法是使用Linux top命令。 top命令列出系統上正在運行的所有進程。
您只需按下“k”鍵並輸入您想要殺死的應用程序的進程ID,就可以殺死一個進程。
在本節前面的kill命令中,它要求您使用ps命令查找進程,然後使用kill命令終止進程。
這不是最簡單的選擇。
首先,ps命令會返回不需要的信息。 你想要的只是進程ID。 您可以通過運行以下命令更簡單地獲取進程ID:
pgrep firefox
上述命令的結果只是Firefox的進程ID。 您現在可以運行kill命令,如下所示:
殺死
(用pgrep返回的實際進程ID替換
然而,簡單地將程序名稱提供給pkill實際上更容易,如下所示:
pkill firefox
最後,您可以使用圖形工具,例如Ubuntu提供的名為“System Monitor”的圖形工具。 要運行“系統監視器”,請按超級鍵(大多數計算機上的Windows鍵)並在搜索欄中鍵入“sysmon”。 當系統監視器圖標出現時,點擊它。
系統監視器顯示進程列表。 要以乾淨的方式結束程序,請選擇它並按屏幕底部的結束鍵(或按CTRL和E)。 如果這不起作用,請右鍵單擊並選擇“殺死”或按CTRL和K關於您希望殺死的進程。