首先要知道的是SIGINT
、SIGKILL
和SIGTERM
代表的时一种信号。什么是信号?信号是一个 POSIX
内部通信系统:发送通知给进程,以告知其发生的事件。(windows系统不支持)。 这三个个信号都是用来终止进程的。
三者之间的区别
SIGINT
信号值为2,当用户按Ctrl+C
时触发默认行为会终止当前进程,支持自定义覆盖其默认行为(利用trap
命令捕获对应信号自定义处理逻辑);
kill -2 <process_id>
SIGTERM
信号值为15,kill
命令的默认值,终止进程方式相对优雅,可以被忽略,阻塞,这就就使其父进程或者子进程可以获取其被终止的信息。同样支持自定义覆盖其默认行为。
kill <process_id>
kill -15 <process_id>
SIGKILL
信号值为9,直接杀死进程及其子进程,切不可以忽略、阻塞立即执行,不支持自定义行为。
kill -9 <process_id>