/etc/rcX.d/ 中没有“K”链接的守护进程会发生什么情况

/etc/rcX.d/ 中没有“K”链接的守护进程会发生什么情况

K如果 init 脚本在 (例如) 中没有相应的条目,那么通过 init 脚本启动的进程会发生什么情况/etc/rc0.d/

例如,以下脚本启动了一个守护进程:

-rwxrwxr-x. 1 root root 3.3K Jul 16 11:48 /etc/rc3.d/S99foobar

没有相应的链接(例如/etc/rc0.d/K99foobar)来处理在关机/重启时终止这些进程。

这些进程在最后运行时,是否只从 init 接收 SIGTERM,然后是 SIGKILL?或者 init 足够聪明,可以调用/etc/init.d/foobar stop

答案1

如果您仔细观察关机过程,您就会发现,在几乎所有操作都完成后,init 将终止所有仍在运行的程序。

在 Red Hat/CentOS 6 系统上,您将看到:

Sending all processes the TERM signal...

几秒钟后

Sending all processes the KILL signal...

此时尚未关闭的程序将被终止。这是在/etc/rc.d/init.d/halt脚本中执行的最后一个脚本,也是系统关闭时运行的脚本。

运行后,halt开始卸载文件系统并执行其他关机前的最终清理,然后最终实际停止或重新启动系统。

所有其他使用 upstart 或 SysVinit 的发行版都做类似的事情。

请注意,该问题不会出现在 systemd 中,因为它始终知道自己已启动了哪些服务。

答案2

最后,在击落所有可以击落的东西之后,剩下的一切都会得到“杀戮 -9”。

相关内容