本文為joshua317原創文章,轉載請注明:轉載自joshua317博客 https://www.joshua317.com/article/187
一、簡介
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進程是不可殺的!
本文為joshua317原創文章,轉載請注明:轉載自joshua317博客 https://www.joshua317.com/article/187