kill信号的使用
多数现代的shell,包括Bash,有一个内建的 kill 函数。在Bash里,信号名和数字都可以被接受为选项,选项可以是作业名或者进程号。使用 -l
选项使得一个退出状态可以被报告:0是至少被成功发送的一个信号,有错误发生的话就是非零。
从 /usr/bin
使用 kill 命令,你的系统可能开启了额外选项,比如以不同于你的ID的用户或者执行进程的名字来杀死进程,同使用 pgrep 和 pkill 一样。
Both kill commands send the TERM signal if none is given.
下表所列是最常用的信号:
SIGKILL 和 SIGSTOP | |
---|---|
SIGKILL 和 SIGSTOP 可以被捕获,阻止和忽略。 |
当杀死一个或者一系列进程,通常先尝试最小危险的信号 SIGTERM。那样,关心按次序关机的程序得到设计来执行当收到类似清理关闭打开文件的 SIGTERM 信号。如果你向一个进程发送一个 SIGKILL 信号,你就把进程在关闭前进行清理工作的机会给剥夺了,可能造成意想不到的后果。
但是如果一个清理终止没有起作用,那么 INT 或者 KILL 信号可能是唯一的选择。比如,当一个进程不是使用 Ctrl+C中止的话,最好使用kill -9加上进程号。
当一个进程启动了几个实例, killall 可能更方便。它使用和kill同样的选项,只不过对进程的所有实例起作用。在正式环境使用之前测试这个命令,即便它可能不能像期望的那样在某些商业用途