kill 的常用信號


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


免責聲明!

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



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