【命令】kill命令
kill命令詳解:
<---用于向進程發送信號,以實現對進程的管理--->
語法格式:kill [-s signal|-SIGNAL] pid...
kill -l [signal]
其語法格式最終為:kill [參數] 進程號
1、命令功能:
發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果無法終止該程序可用“-KILL”參數,其發送的信號為SIGKILL(9),將強制結束進程
使用ps命令或者jobs命令可以查看進程號。root用戶將影響用戶的所有進程,非root用戶只能影響自己的進程
2、命令參數:
-l信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
-a當處理當前進程時,不限制命令名和進程號的對應關系
-p指定kill命令只打印相關進程的進程號,而不發送任何信號
-s指定發送信號
-u指定用戶
3、注意事項:
·kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理并釋放資源。也可以用kill向進程發送特定的信號。例如:
kill-2123,它的效果等同于在前臺運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號。
·kill可以帶有進程ID號作為參數。當用kill向這些進程發送信號時,必須是這些進程的主人。如果試圖撤銷一個沒有權限撤銷的進程或撤銷一個不存在的進程,就會得到一個錯誤信息。
·可以向多個進程發信號或終止它們。
·當kill成功地發送了信號后,shell會在屏幕上顯示出進程的終止信息。有時這個信息不會馬上顯示,只有當按下Enter鍵使shell的命令提示符再次出現時,才會顯示出來。
·應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的后臺作業,可以輸入kill0。因為有些在后臺運行的命令會啟動 多個進程,跟蹤并找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill0來終止所有由當前shell啟動的進程,是個有效的方法。
4、每個信號的標識方式:
1) 信號的數字標識;
2) 信號的完整名稱;
3) 信號的簡寫名稱;
5、使用示例:
示例1:列出所有信號名稱:
1 [root@test1 ~]# kill -l 2 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 3 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 4 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 5 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 6 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 7 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 8 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 9 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 10 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 11 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 13 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 14 63) SIGRTMAX-1 64) SIGRTMAX 15 [root@test1 ~]#
說明:只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP1終端斷線(無須關閉進程而讓其重讀配置文件)
INT2 終止正在運行的進程(Ctrl+C)
QUIT3退出(同Ctrl+)
TERM15終止運行中的程序,這是友好終止
KILL9殺死運行中的進程,這是強制終止
CONT18繼續(與STOP相反,fg/bg命令)
STOP19暫停(同Ctrl+Z)
示例2:實例2:得到指定信號的數值
[root@test1 ~]# kill -l HUP 1 [root@test1 ~]# kill -l INT 2 [root@test1 ~]#
示例3:先用ps查找進程,然后kill殺掉
# ps -ef|grep vim
# kill PID
[root@test1 ~]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@test1 ~]# kill 3268
[root@test1 ~]# kill 3268
-bash: kill: (3268) - 沒有那個進程
[root@test1 ~]#
示例4:徹底殺死進程
【方法一:直接發送信號9徹底殺死】
# ps -ef|grep vim
# kill -9 PID
[root@test1 ~]# ps -ef|grep vim root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log root 3370 2822 0 16:21 pts/0 00:00:00 grep vim [root@test1 ~]# kill -9 3268 [root@test1 ~]# kill 3268 -bash: kill: (3268) - 沒有那個進程 [root@test1 ~]#
【方法二:直接殺死該進程的父進程】
示例5:徹底殺死指定用戶的所有進程
# kill -9 $(ps -ef | grep username)
示例6:init進程是不殺的
# kill -9 1
[root@localhost ~]# ps -ef|grep init root 1 0 0 Nov02 ? 00:00:00 init [3] root 17563 17534 0 17:37 pts/1 00:00:00 grep init [root@test1 ~]# kill -9 1 [root@ltest1 ~]# kill -HUP 1 [root@test1 ~]# ps -ef|grep init root 1 0 0 Nov02 ? 00:00:00 init [3] root 17565 17534 0 17:38 pts/1 00:00:00 grep init [root@test1 ~]# kill -KILL 1 [root@test1 ~]# ps -ef|grep init root 1 0 0 Nov02 ? 00:00:00 init [3] root 17567 17534 0 17:38 pts/1 00:00:00 grep init [root@test1 ~]#
說名:init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,并已初始化所有的設備驅動程序和數據結構等)之后,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。其它所有進程都是init進程的子孫。init進程是不可殺的!
總結
以上是生活随笔為你收集整理的【命令】kill命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 凭证类型
- 下一篇: GUPPY 3.1.5 安装