systemd-halt.service 中文手册
名称
systemd-halt.service, systemd-poweroff.service, systemd-reboot.service, systemd-kexec.service, systemd-shutdown — 系统关闭逻辑
大纲
systemd-halt.service
systemd-poweroff.service
systemd-reboot.service
systemd-kexec.service
/usr/lib/systemd/systemd-shutdown
/usr/lib/systemd/system-shutdown/
描述
systemd-halt.service
是一个包含在 halt.target
中的系统服务,负责执行实际的关机动作。类似的,systemd-poweroff.service
包含在poweroff.target
中、systemd-reboot.service
包含在reboot.target
中、systemd-kexec.service
包含在kexec.target
中,分别负责执行对应的实际操作。
这些服务在运行时会确保 PID=1 的进程已经被负责实际关机动作的/usr/lib/systemd/systemd-shutdown
工具所替换。在关机前,此工具将会卸载所有文件系统、卸载交换设备、卸载所有存储设备、杀死所有进程。
将关机动作交给一个单独的二进制程序是必要的,否则系统更新之后的重启动作可能会失败,因为运行中的 PID=1 进程可能仍然依赖于已经消失的库文件,这将会导致文件系统处于忙碌状态,从而无法重新挂载为只读模式。
在实际执行 halt/poweroff/reboot/kexec 动作之前,systemd-shutdown
将会运行/usr/lib/systemd/system-shutdown/
目录中的所有可执行文件,并根据所要执行的动作,向这些可执行文件传递 "halt
","poweroff
", "reboot
","kexec
" 参数。目录中的所有可执行文件都以并行的方式被同时调用,并仅在所有这些可执行文件退出之后,systemd-shutdown
才会真正实际执行 halt/poweroff/reboot/kexec 动作。
注意,千万不要直接执行 systemd-halt.service
及其相关单元。而是应该使用例如"systemctl halt
"这样的命令来关机。
参见
systemd(1),systemctl(1),systemd.special(7),reboot(2),systemd-suspend.service(8),bootup(7)