怎樣在 Linux 命令列下殺死乙個程序

2021-08-28 02:21:53 字數 2291 閱讀 1186

想像一下:你開啟了乙個程式(可能來自於你的桌面選單或者命令列),然後開始使用這個程式,沒想到程式會鎖死、停止執行、或者意外宕機。你嘗試再次執行該程式,但是它反饋說原來的程序沒有完全關閉。

你該怎麼辦?你要結束程序。但該如何做?不管你信與不信,最好的解決方法大都在命令列裡。值得慶幸的是, linux 有供使用者殺死錯誤的程序的每個必要的工具,然而,你在執行殺死程序的命令之前,你首先需要知道程序是什麼。該如何處理這一類的任務。一旦你能夠掌握這種工具,它實際是十分簡單的……

讓我來介紹給你這些工具。

我來概述的步驟是每個 linux 發行版都能用的,不論是桌面版還是伺服器版。我將限定只使用命令列,請開啟你的終端開始輸入命令吧。

殺死乙個沒有響應的程序的第乙個步驟是定位這個程序。我用來定位程序的命令有兩個:top和ps命令。top是每個系統管理員都知道的工具,用top命令,你能夠知道到所有當前正在執行的程序有哪些。在命令列裡,輸入top命令能夠就看到你正在執行的程式程序(圖1)

圖 1: top 命令給出你許多的資訊。

從顯示的列表中你能夠看到相當重要的資訊,舉個例子,chrome 瀏覽器反映遲鈍,依據我們的top命令顯示,我們能夠辨別的有四個 chrome 瀏覽器的程序在執行,程序的 pid 號分別是 3827、3919、10764 和 11679。這個資訊是重要的,可以用乙個特殊的方法來結束程序。

儘管top命令很是方便,但也不是得到你所要資訊最有效的方法。 你知道你要殺死的 chrome 程序是那個,並且你也不想看top命令所顯示的實時資訊。 鑑於此,你能夠使用ps命令然後用grep命令來過濾出輸出結果。這個ps命令能夠顯示出當前程序列表的快照,然後用grep命令輸出匹配的樣式。我們通過grep命令過濾ps命令的輸出的理由很簡單:如果你只輸入ps命令,你將會得到當前所有程序的列表快照,而我們需要的是列出 chrome 瀏覽器程序相關的。所以這個命令是這個樣子:

這裡aux選項如下所示:

·a = 顯示所有使用者的程序

·u = 顯示程序的使用者和擁有者

·x = 也顯示不依附於終端的程序

當你搜尋圖形化程式的資訊時,這個x引數是很重要的。

當你輸入以上命令的時候,你將會得到比圖 2 更多的資訊,而且它有時用起來比top命令更有效。

圖 2:用 ps 命令來定位所需的內容資訊。

現在我們開始結束程序的任務。我們有兩種可以幫我們殺死錯誤的程序的資訊。

·程序的名字

·程序的 id (pid)

你用哪乙個將會決定終端命令如何使用,通常有兩個命令來結束程序:

·kill-通過程序 id 來結束程序

·killall-通過程序名字來結束程序

有兩個不同的訊號能夠傳送給這兩個結束程序的命令。你傳送的訊號決定著你想要從結束程序命令中得到的結果。舉個例子,你可以傳送hup(掛起)訊號給結束程序的命令,命令實際上將會重啟這個程序。當你需要立即重啟乙個程序(比如就守護程序來說),這是乙個明智的選擇。你通過輸入kill -l可以得到所有訊號的列表,你將會發現大量的訊號。

圖 3: 可用的結束程序訊號。

最經常使用的結束程序的訊號是:

signal name

single value

effect

sighup

掛起sigint

鍵盤的中斷訊號

sigkill

發出殺死訊號

sigterm

發出終止訊號

sigstop

17, 19, 23

停止程序

好的是,你能用訊號值來代替訊號名字。所以你沒有必要來記住所有各種各樣的訊號名字。

所以,讓我們現在用kill命令來殺死 chrome 瀏覽器的程序。這個命令的結構是:

這裡 signal 是要傳送的訊號,pid 是被殺死的程序的 id。我們已經知道,來自我們的ps命令顯示我們想要結束的程序 id 號是 3827、3919、10764 和 11679。所以要傳送結束程序訊號,我們輸入以下命令:

一旦我們輸入了以上命令,chrome 瀏覽器的所有程序將會成功被殺死。

我們有更簡單的方法!如果我們已經知道我們想要殺死的那個程序的名字,我們能夠利用killall命令傳送同樣的訊號,像這樣:

附帶說明的是,上邊這個命令可能不能捕捉到所有正在執行的 chrome 程序。如果,執行了上邊這個命令之後,你輸入ps aux | grep chrome命令過濾一下,看到剩下正在執行的 chrome 程序有那些,最好的辦法還是回到kill命令通過程序 id 來傳送訊號值9來結束這個程序。

正如你看到的,殺死錯誤的程序並沒有你原本想的那樣有挑戰性。當我讓乙個頑固的程序結束的時候,我趨向於用killall命令來作為有效的方法來終止,然而,當我讓乙個真正的活躍的程序結束的時候,kill命令是乙個好的方法。

怎樣在Linux命令列下殺死乙個程序

linux 的命令列裡面有用來停止正在執行的程序的所有所需工具。jack wallen 將為您講述細節。想像一下 你開啟了乙個程式 可能來自於你的桌面選單或者命令列 然後開始使用這個程式,沒想到程式會鎖死 停止執行 或者意外宕機。你嘗試再次執行該程式,但是它反饋說原來的程序沒有完全關閉。你該怎麼辦?...

怎樣在Linux命令列下檢視命令幫助?

command help 使用 help命令檢視命令的使用資訊,這個命令的輸出很簡單,檢視起來也比較方便。還有就是當在系統目錄中不存在真實的程式檔案 存在於bash程式裡 對於這部分命令,檢視幫助的方法就是使用help命令。例如 用help命令檢視passwd的幫助資訊 注意 在命令列中特殊符號的意...

Linux在命令列模式下執行命令

在linux預設的登入的模式中,主要分為兩種,一種是純文字介面的登入環境,另一種則是圖形介面的登入環境。linux預設提供6個終端介面來讓使用者登入,切換的方式為 ctrl alt f1 f6 系統會按 f1 f6 的順序分別命名為 tty1 tty6的操作介面環境。ctrl alt f1 f6 文...