Unix 与x27之间的差异;死亡';和';终止';

Unix 与x27之间的差异;死亡';和';终止';,unix,kill-process,sigkill,Unix,Kill Process,Sigkill,我只是在用休眠进程测试kill开关标志 首先我试着用-15杀了它 xtechkid@ubuntu:~/Desktop/expermiments$ ps cax | grep 10005 10005 pts/2 S+ 0:00 sh xtechkid@ubuntu:~/Desktop/expermiments$ kill -15 10005 这个过程就终止了 xtechkid@ubuntu:~/Desktop/expermiments$ sh testscript.sh

我只是在用休眠进程测试kill开关标志

首先我试着用-15杀了它

 xtechkid@ubuntu:~/Desktop/expermiments$ ps cax | grep 10005
 10005 pts/2    S+     0:00 sh
 xtechkid@ubuntu:~/Desktop/expermiments$ kill -15 10005
这个过程就终止了

 xtechkid@ubuntu:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Terminated
然后我用-9杀了它

 xtechkid@ubuntu:~/Desktop/expermiments$ ps -ef | grep testscript.sh
 xtechkid 10059  9852  0 13:48 pts/2    00:00:00 sh testscript.sh
 xtechkid 10064 10007  0 13:48 pts/4    00:00:00 grep --color=auto testscript.sh
 xtechkid@ubuntu:~/Desktop/expermiments$ kill -9 10059
这个过程被扼杀了

 xtechkid@ubuntu:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Killed

有什么区别?

终止:它将在关机前存储所有数据(将数据从RAM写入磁盘、日志等)


杀死:这更像是按下电脑电源和复位按钮。它不会保存任何日志或其他数据。

终止信号SIGTERM是一种可在程序中截获的信号。通常,打算在后台运行的进程将捕获此信号并启动关闭进程,从而导致干净的退出。无法拦截“kill”信号SIGKILL。当这被发送到进程时,它将导致该程序的突然终止


例如,当您关闭或重新启动计算机时,通常会首先向正在运行的进程发送一个SIGTERM,允许它们以干净的方式退出(如果它们支持)。然后,几秒钟后,一个SIGKILL被发送到仍在运行的进程,以便强制释放正在使用的资源(例如正在使用的文件),关闭序列可以继续(例如卸载文件系统)

我喜欢这种PC电源和重置按钮的比喻。