我有一个在RHEL7上由systemd启动的Linux进程。当该进程停止时,我需要知道它是因为系统关闭或重新启动而停止的,并且我需要能够区分这两种情况。
以前,在RHEL6 init下,我可以通过查看用于调用我的init脚本的路径名来完成此操作,并相应地向进程发送不同的信号,例如:
case "$0" in
*rc0\.d*|*rc1\.d*) #shutdown
sig=USR1
;;
*rc6\.d*) #reboot
sig=USR2
;;
*)
sig=TERM
;;
esac
这在systemd中无法正常工作...虽然我的初始化脚本在正确的时间被调用,但$0始终相同(/etc/init.d/scriptname)。
在systemd下有没有某种方式可以知道您是因为系统关闭或重新启动而被调用?我很乐意摆脱初始化脚本并将其配置为systemd目标,但是从文档中我找不到实现我想要的方式。
systemctl is-active reboot.target
和systemctl is-active shutdown.target
。 - CameronNemo