1. 程式人生 > >linux殺死程序的五種方法

linux殺死程序的五種方法

◆編者注:KILLALL(Section: User (1)/Updated: 1999年9月7日)———————————————–NAME (名稱)killall – 以名字方式來殺死程序SYNOPSIS (總覽)killall [-egiqvw] [-signal] name …killall -lkillall -VDESCRIPTION (描述)killall 傳送一條訊號給所有執行任意指定命令的程序. 如果沒有指定訊號名, 則傳送SIGTERM.。訊號可以以名字 (如 -HUP ) 或者數字 (如 -1 ) 的方式指定. 訊號 0 (檢查程序是否存在)只能以數字方式指定。如果命令名包括斜槓 (/), 那麼執行該特定檔案的程序將被殺掉, 這與程序名無關。如果對於所列命令無程序可殺, 那麼 killall 會返回非零值. 如果對於每條命令至少殺死了一個程序, killall 返回 0。Killall 程序決不會殺死自己 (但是可以殺死其它 killall 程序)。OPTIONS (選項)-e對 於很長的名字, 要求準確匹配. 如果一個命令名長於 15 個字元, 則可能不能用整個名字 (溢位了). 在這種情況下, killall 會殺死所有匹配名字前 15 個字元的所有程序. 有了 -e 選項,這樣的記錄將忽略. 如果同時指定了 -v 選項, killall 會針對每個忽略的記錄列印一條訊息。-g殺死屬於該程序組的程序. kill 訊號給每個組只發送一次, 即使同一程序組中包含多個程序。-i互動方式,在殺死程序之前徵求確認資訊。-l列出所有已知的訊號名。-q如果沒有程序殺死, 不會提出抱怨。-v報告訊號是否成功傳送。-V顯示版本資訊。-w等待所有殺的程序死去. killall 會每秒檢查一次是否任何被殺的程序仍然存在, 僅當都死光後才返回. 注意: 如果訊號被忽略或沒有起作用, 或者程序停留在殭屍狀態, killall 可能會永久等待。FILES(相關檔案)/proc proc檔案系統的存在位置。KNOWN bugS (已知 BUGS)以檔案方式殺死只對那些在執行時一直開啟的可執行檔案起作用, 也即, 混雜的可執行檔案不能夠通過這種方式殺死。要警告的是輸入 killall name 可能不會在非 Linux 系統上產生預期的效果, 特別是特權使用者執行時要小心。

在兩次掃描的間隙, 如果程序消失了而被代之以一個有同樣 PID 的新程序, killall -w 偵測不到。

來源:http://www.ubuntuhome.com/ubuntu-kill-command.html

下面來了解相關命令:一、檢視程序的命令 有ps、pstree、pgrep等:                                       1、ps                                             
顯示程序資訊,引數可省略 
-aux   以BSD風格顯示程序 常用-efH   以System V風格顯示程序-e , -A 顯示所有程序a        顯示終端上所有使用者的程序

x        顯示無終端程序u     顯示詳細資訊f        樹狀顯示w     完整顯示資訊l      顯示長列表

在終端中執行ps aux,
各列輸出欄位的含義:

USER        程序所有者
PID         程序ID
PPID         父程序
%CPU       CPU佔用率
%MEM     記憶體佔用率
NI          程序優先順序。數值越大,佔用CPU時間越少
VSZ          程序虛擬大小
RSS          頁面檔案佔用
TTY         終端ID
STAT         程序狀態
+---D   不可中斷    Uninterruptible sleep (usually IO)
+---R   正在執行,或在佇列中的程序
+---S   處於休眠狀態
+---T   停止或被追蹤
+---Z   殭屍程序
+---W   進入記憶體交換(從核心2.6開始無效)
+---X   死掉的程序

+---<   高優先順序
+---N   低優先順序
+---L   有些頁被鎖進記憶體
+---s   包含子程序
+---+   位於後臺的程序組;
+---l   多執行緒,克隆執行緒 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

PID:程序識別符號,系統為每一個程序分配一個識別碼,稱為PID。        

ps命令極為常用,其他命令還有:

2.pstree                        
樹狀顯示程序資訊
-a 顯示完整命令及引數-c 重複程序分別顯示-c 顯示程序ID PID-n 按 PID 排列程序3.pgrep <程序名>                      
顯示程序的PID
-l 顯示程序名和程序PID-o 程序起始ID-n 程序終止ID二、結束程序的命令 有kill、pkill、killall、xkill等:                                    
kill [訊號程式碼] <程序PID>                 

根據PID向程序傳送訊號,常用來結束程序,預設訊號為 -9
訊號程式碼,可取值如下:
-l [訊號數字] 顯示、翻譯訊號程式碼-9 , -KILL 傳送 kill 訊號退出-6 , -ABRT 傳送 abort 訊號退出-15 , -TERM 傳送 Termination 訊號-1 , -HUP 掛起-2 , -INT 從鍵盤中斷,相當於 Ctrl+c-3 , -QUIT 從鍵盤退出,相當於 Ctrl+d-4 , -ILL 非法指令-11 , -SEGV 記憶體錯誤-13 , -PIPE 破壞管道-14 , -ALRM-STOP 停止程序,但不結束-CONT 繼續執行已停止的程序-9 -1 結束當前使用者的所有程序pkill <程序名>                             
結束程序族。如果結束單個程序,請用 kill

killall <程序名>                               
killall和pkill 應用方法差不多,也是直接殺死執行中的程式;如果您想殺掉單個程序,請用kill 來殺掉。

xkill                           
在圖形介面中點殺程序。
當xkill執行時滑鼠指標變為骷髏圖案,哪個圖形程式崩潰一點就OK了。如果您想終止xkill ,就按右鍵取消。
比如當firefox 出現崩潰不能退出時,點滑鼠就能殺死firefox 。
xkill 呼叫方法:

pkill 和killall 應用方法差不多,也是直接殺死執行中的程式;如果您想殺掉單個程序,請用kill 來殺掉。

 必要引數
-f 顯示完整程式
-l 顯示原始碼
-n 顯示新程式
-o 顯示舊程式
-v 與條件不符合的程式
-x 與條件符合的程式

選擇引數
-p<程序號> 列出父程序為使用者指定程序的程序資訊
-t<終端> 指定終端下的所有程式
-u<使用者> 指定使用者的程式