歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

每天一個linux命令(42):kill命令

每天一個linux命令(42):kill命令   相關鏈接: 每天一個linux命令(1):ls命令 http://www.2cto.com/os/201210/163049.html; 每天一個linux命令(2):cd命令 http://www.2cto.com/os/201210/163050.html; 每天一個linux命令(3):pwd命令 http://www.2cto.com/os/201210/163462.html; 每天一個linux命令(4):mkdir命令 http://www.2cto.com/os/201210/163463.html; 每天一個linux命令(5):rm命令 http://www.2cto.com/os/201210/163662.html; 每天一個linux命令(6):rmdir命令 http://www.2cto.com/os/201210/164017.html; 每天一個linux命令(7):mv命令 http://www.2cto.com/os/201210/164247.html; 每天一個linux命令(8):cp命令 http://www.2cto.com/os/201210/164254.html; 每天一個linux命令(9):touch命令 http://www.2cto.com/os/201211/165699.html; 每天一個linux命令(10):cat命令 http://www.2cto.com/os/201211/165989.html; 每天一個linux命令(11):nl命令 http://www.2cto.com/os/201211/165990.html 每天一個linux命令(12):more命令 http://www.2cto.com/os/201211/165994.html 每天一個linux命令(13):less命令 http://www.2cto.com/os/201211/165998.html 每天一個linux命令(14):head命令 http://www.2cto.com/os/201211/166191.html 每天一個linux命令(15):tail命令 http://www.2cto.com/os/201211/168702.html 每天一個linux命令(16):which命令 http://www.2cto.com/os/201211/168890.html 每天一個linux命令(17):whereis命令 http://www.2cto.com/os/201211/168893.html 每天一個linux命令(18):locate命令 http://www.2cto.com/os/201211/168895.html 每天一個linux命令(19):find命令概覽 http://www.2cto.com/os/201211/168897.html 每天一個linux命令(20):find命令之exec http://www.2cto.com/os/201211/168901.html 每天一個linux命令(21):find命令之xargs http://www.2cto.com/os/201211/168903.html 每天一個linux命令(22):find命令的參數詳解 http://www.2cto.com/os/201211/168912.html 每天一個linux命令(23):Linux目錄結構 http://www.2cto.com/os/201211/170430.html 每天一個linux命令(24):Linux文件類型與擴展名 http://www.2cto.com/os/201211/170431.html 每天一個linux命令(25):linux文件屬性詳解 http://www.2cto.com/os/201211/170434.html 每天一個linux命令(26):用SecureCRT來上傳和下載文件 http://www.2cto.com/os/201211/172022.html 每天一個linux命令(27):linux chmod命令 http://www.2cto.com/os/201211/172028.html 每天一個linux命令(28):tar命令 http://www.2cto.com/os/201212/172641.html 每天一個linux命令(29):chgrp命令 http://www.2cto.com/os/201212/172983.html 每天一個linux命令(30):chown命令 http://www.2cto.com/os/201212/173239.html 每天一個linux命令(31):/etc/group文件詳解 http://www.2cto.com/os/201212/174429.html 每天一個linux命令(32):gzip命令 http://www.2cto.com/os/201212/174431.html 每天一個linux命令(33):df命令 http://www.2cto.com/os/201212/174434.html 每天一個linux命令(34):du命令 http://www.2cto.com/os/201212/174701.html 每天一個linux命令(35):ln命令 http://www.2cto.com/os/201212/174993.html 每天一個linux命令(36):diff命令 http://www.2cto.com/os/201212/176333.html 每天一個linux命令(37):date命令 http://www.2cto.com/os/201212/176335.html 每天一個linux命令(38):cal命令 http://www.2cto.com/os/201212/176337.html 每天一個linux命令(39):grep命令 http://www.2cto.com/os/201212/177059.html 每天一個linux命令(40):wc命令 http://www.2cto.com/os/201212/177343.html 每天一個linux命令(41):ps命令 http://www.2cto.com/os/201212/177665.html   Linux中的kill命令用來終止指定的進程(terminate a process)的運行,是Linux下進程管理的常用命令。通常,終止一個前台進程可以使用Ctrl+C鍵,但是,對於一個後台進程就須用kill命令來終止,我們就需要先使用ps/pidof/pstree/top等工具獲取進程PID,然後使用kill命令來殺掉該進程。kill命令是通過向進程發送指定的信號來結束相應進程的。在默認情況下,采用編號為15的TERM信號。TERM信號將終止所有不能捕獲該信號的進程。對於那些可以捕獲該信號的進程就要用編號為9的kill信號,強行“殺掉”該進程。   www.2cto.com   1.命令格式: kill[參數][進程號] 2.命令功能: 發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果任無法終止該程序可用“-KILL” 參數,其發送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程。 3.命令參數: -l  信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱 -a  當處理當前進程時,不限制命令名和進程號的對應關系 -p  指定kill 命令只打印相關進程的進程號,而不發送任何信號 -s  指定發送信號 -u  指定用戶  注意: 1、kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理並釋放資源。也可以用kill向進程發送特定的信號。例如: kill -2 123 它的效果等同於在前台運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號。 2、kill可以帶有進程ID號作為參數。當用kill向這些進程發送信號時,必須是這些進程的主人。如果試圖撤銷一個沒有權限撤銷的進程或撤銷一個不存在的進程,就會得到一個錯誤信息。 3、可以向多個進程發信號或終止它們。 4、當kill成功地發送了信號後,shell會在屏幕上顯示出進程的終止信息。有時這個信息不會馬上顯示,只有當按下Enter鍵使shell的命令提示符再次出現時,才會顯示出來。 5、應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的後台作業,可以輸入kill 0。因為有些在後台運行的命令會啟動多個進程,跟蹤並找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的進程,是個有效的方法。 4.使用實例: 實例1:列出所有信號名稱 命令: kill -l 輸出: [root@localhost test6]# kill -l  1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL  5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE  9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2 13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT 17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP 21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU 25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH 29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN 35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4 39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8 43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6 59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2 63) SIGRTMAX-1  64) SIGRTMAX 說明: 只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號: HUP    1    終端斷線 INT     2    中斷(同 Ctrl + C) QUIT    3    退出(同 Ctrl + \) TERM   15    終止 KILL    9    強制終止 CONT   18    繼續(與STOP相反, fg/bg命令) STOP    19    暫停(同 Ctrl + Z) 實例2:得到指定信號的數值 命令: 輸出: [root@localhost test6]# kill -l KILL 9[root@localhost test6]# kill -l SIGKILL 9[root@localhost test6]# kill -l TERM 15[root@localhost test6]# kill -l SIGTERM 15[root@localhost test6]# 說明: 實例3:先用ps查找進程,然後用kill殺掉 命令: kill 3268 輸出: [root@localhost test6]# 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@localhost test6]# kill 3268  [root@localhost test6]# kill 3268  -bash: kill: (3268) - 沒有那個進程 [root@localhost test6]# 說明: 實例4:徹底殺死進程 命令: kill –9 3268  輸出: [root@localhost test6]# 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@localhost test6]# kill –9 3268  [root@localhost test6]# kill 3268  -bash: kill: (3268) - 沒有那個進程 [root@localhost test6]# 說明: 實例5:殺死指定用戶所有進程 命令: kill -9 $(ps -ef | grep peidalinux) kill -u peidalinux 輸出: [root@localhost ~]# kill -9 $(ps -ef | grep peidalinux)  [root@localhost ~]# kill -u peidalinux 說明: 方法一,過濾出hnlinux用戶進程並殺死 實例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@localhost ~]# kill -9 1 [root@localhost ~]# kill -HUP 1 [root@localhost ~]# 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@localhost ~]# kill -KILL 1 [root@localhost ~]# 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@localhost ~]# 說明: init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。 其它所有進程都是init進程的子孫。init進程是不可殺的!
Copyright © Linux教程網 All Rights Reserved