一天一個 Linux 命令(36):kill 命令


一、簡介

Linux里的kill命令用來終止指定的進程(terminate a process)的運行,是Linux下進程管理的常用命令。

通常,終止一個前台進程可以使用Ctrl+C鍵,但是,對於一個后台進程就須用kill命令來終止,我們就需要先使用ps/pidof/pstree/top等進程查看工具獲取進程PID,然后使用kill命令來殺掉該進程。

kill命令可將指定的信號發送給相應的進程或工作。 kill命令默認使用信號為SIGTERM(15),用於結束進程或工作。如果進程或工作忽略此信號,則可以使用信號 SIGKILL(9) ,強制殺掉進程。

二、格式說明

kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]

kill [參數] [進程號]

三、選項說明

-l	列出系統支持的信號
-s	指定向進程發送的信號
-a	處理當前進程時不限制命令名和進程號的對應關系
-p	指定kill命令只打印相關進程的進程號,而不發送任何信號
-u  指定用戶 

使用 kill -l 命令列出所有可用信號,最常用的信號是:
1 (HUP):重新加載進程。
9 (KILL):殺死一個進程。
15 (TERM):正常停止一個進程。

四、命令功能

用來刪除執行中的程序或工作

五、常見用法

5.1 顯示系統支持的信號列表

# 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

HUP 1 重新加載進程

INT 2 中斷(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + \)

TERM 15 終止

KILL 9 強制終止

CONT 18 繼續(與STOP相反, fg/bg命令)

STOP 19 暫停(同 Ctrl + Z)

5.2 查找進程,並用kill殺掉

# ps aux|grep nginx
root      7591  0.0  0.0 112816   972 pts/0    S+   10:46   0:00 grep --color=auto nginx
www      13548  0.0  0.3  80608 26372 ?        S    Sep15   0:32 nginx: worker process
www      13549  0.0  0.3  80608 26860 ?        S    Sep15   1:14 nginx: worker process
www      13550  0.0  0.3  80608 27184 ?        S    Sep15   0:43 nginx: worker process
www      13551  0.0  0.3  80608 27496 ?        S    Sep15   1:48 nginx: worker process
root     30802  0.0  0.0  48828  5212 ?        Ss   Apr15   0:00 nginx: master process nginx

殺掉nginx主進程30802

# kill -9 30802

5.3 強制殺死進程

# kill -KILL 30802

5.4 重新加載進程

# kill -HUP 30802

5.5 殺死指定用戶所有進程

# kill -9 $(ps -ef | grep www) //方法一 過濾出www用戶進程 
# kill -u www //方法二

5.6 拓展

init進程是不可殺的

init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之后,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。 其它所有進程都是init進程的子孫。init進程是不可殺的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM