萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 總結Linux中用於終結進程的kill和pikill及killall命令用法

總結Linux中用於終結進程的kill和pikill及killall命令用法

   kill

  kill 命令:發送指定的信號到相應進程。不指定信號將發送SIGTERM(15)終止指定進程。若仍無法終止該程序可用“-KILL” 參數,其發送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程

  -l <信號變化哦啊>,若不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱

  -a 當處理當前進程時,不限制命令名和進程號的對應關系

  -p 指定kill 命令只打印相關進程的進程號,而不發送任何信號

  -s 指定發送信號

  -u 指定用戶

  例:

  代碼如下:

  [root@redhat ~]# kill 1908 #殺死進程

  [root@redhat ~]# kill -KILL 1908 #強制殺死進程

  [root@redhat ~]# kill -9 6985 #徹底殺死進程

  [root@redhat ~]# kill -u tank #殺死指定用戶的所有進程

  pkill

  pkill 命令:是ps命令和kill命令的結合,用來殺死指定進程

  -f 顯示完整程序

  -l 顯示源代碼

  -n 顯示新程序

  -o 顯示舊程序

  -v 與條件不符合的程序

  -x 與條件符合的程序

  -p<進程號> 列出父進程為用戶指定進程的進程信息

  -t<終端> 指定終端下的所有程序

  -u<用戶> 指定用戶的程序

  例:

  代碼如下:

  [root@redhat ~]# pkill -t tty1 #殺死終端1下的所有進程

  [root@Centos ~]# pkill -kill -t pts/2 #踢用戶

  [root@redhat ~]# pkill -9 6985 #徹底殺死進程

  [root@redhat ~]# pkill -u tank #殺死指定用戶的所有進程

  [root@redhat ~]# pkill -vu root #殺死不屬於root用戶的所有進程

  killall

  killall - 以名字方式來殺死進程 [[ ]]

  killall [ -egiqvw ] [ -signal ] name ...

  killall -l

  killall -V [[ ]]

  DESCRIPTION (描述)

  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 可能會永久等待.

  例:

  代碼如下:

  [root@redhat ~]# killall sudo

  會話結束,結束 shell ... ...已被殺死。

copyright © 萬盛學電腦網 all rights reserved