kill命令用於終止指定的進程(terminate a process),是Unix/Linux下進程管理的常用命令。通常,我們在需要終止某個或某些進程時,先使用ps/pidof/pstree/top等工具獲取進程PID,然后使用kill命令來殺掉該進程。kill命令的另外一個用途就是向指定的進程或進程組發送信號(The command kill sends the specified signal to the specified process or process group),或者確定進程號為PID的進程是否還在。比如,有許多程序都把SIGHUP信號作為重新讀取配置文件的觸發條件。
一 常用參數
格式:kill <pid>
格式:kill -TERM <pid>
發送SIGTERM信號到指定進程,如果進程沒有捕獲該信號,則進程終止(If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal.)
格式:kill -l
列出所有信號名稱(Print a list of signal names. These are found in /usr/include/linux/signal.h)。只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
格式:kill -l <signame>
顯示指定信號的數值。
格式:kill -9 <pid>
格式:kill -KILL <pid>
強制殺掉指定進程,無條件終止指定進程。
格式:kill %<jobid>
格式:kill -9 %<jobid>
殺掉指定的任務(使用jobs命令可以列出)
格式:kill -QUIT <pid>
格式:kill -3 <pid>
使得程序正常的退出。
killall命令
killall命令殺死同一進程組內的所有進程。其允許指定要終止的進程的名稱,而非PID。
# killall httpd
二 示例
1)先用ps查找進程,然后用kill殺掉。
[root@new55 ~]# ps -ef|grep vim
root 3368 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@new55 ~]# kill 3368
[root@new55 ~]# kill 3368
-bash: kill: (3368) - 沒有那個進程
2)init進程是不可殺的。
3)列出所有信號名稱
[root@new55 ~]# 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