向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号。如果没有指定SIGSPEC或 SIGNUM,那么假定发送 SIGTERM 信号。
Kill 成为 shell 内嵌有两个理由:它允许使用任务编号而不是进程号,并且在可以创建的进程数上限达到是允许进程被*死。
语法:
kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ...
或 kill -l [信号声明]
选项:
-s sig SIG 是信号名称
-n sig SIG 是信号编号
-l 列出信号名称;如果参数后跟 -l则被假设为信号编号,而相应的信号名称会被列出。
两种比较常用的信号编号:
SIGETRM,SIGKILL
* SIGTERM,终止对应进程
kill -15 pid或kill pid
进程收到这个信号时,可以在完成当前的操作后(比如I/O操作)后,终止运行。
* SIGKILL,强制终止对应进程
kill -9 pid
进程收到这个信号时,会立刻终止运行,不考虑当前正在进行的操作。
附录:信号编号及说明
|Signal Name|Number|Description|
|SIGHUP|1|Hangup (POSIX)|
|SIGINT|2|Terminal interrupt (ANSI)|
|SIGQUIT|3|Terminal quit (POSIX)|
|SIGILL|4|Illegal instruction (ANSI)|
|SIGTRAP|5|Trace trap (POSIX)|
|SIGIOT|6|IOT Trap (4.2 BSD)|
|SIGBUS|7|BUS error (4.2 BSD)|
|SIGFPE|8|Floating point exception (ANSI)|
|SIGKILL|9|Kill(can't be caught or ignored) (POSIX)|
|SIGUSR1|10|User defined signal 1 (POSIX)|
|SIGSEGV|11|Invalid memory segment access (ANSI)|
|SIGUSR2|12|User defined signal 2 (POSIX)|
|SIGPIPE|13|Write on a pipe with no reader, Broken pipe (POSIX)|
|SIGALRM|14|Alarm clock (POSIX)|
|SIGTERM|15|Termination (ANSI)|
|SIGSTKFLT|16|Stack fault|
|SIGCHLD|17|Child process has stopped or exited, changed (POSIX)|
|SIGCONT|18|Continue executing, if stopped (POSIX)|
|SIGSTOP|19|Stop executing(can't be caught or ignored) (POSIX)|
|SIGTSTP|20|Terminal stop signal (POSIX)|
|SIGTTIN|21|Background process trying to read, from TTY (POSIX)|
|SIGTTOU|22|Background process trying to write, to TTY (POSIX)|
|SIGURG|23|Urgent condition on socket (4.2 BSD)|
|SIGXCPU|24|CPU limit exceeded (4.2 BSD)|
|SIGXFSZ|25|File size limit exceeded (4.2 BSD)|
|SIGVTALRM|26|Virtual alarm clock (4.2 BSD)|
|SIGPROF|27|Profiling alarm clock (4.2 BSD)|
|SIGWINCH|28|Window size change (4.3 BSD, Sun)|
|SIGIO|29|I/O now possible (4.2 BSD)|
|SIGPWR|30|Power failure restart (System V)|