我想设置一个计时器,它将停止服务,执行脚本并重新启动服务。
一种可能性是使用
Type=oneshot
ExecStartPre=/bin/systemctl stop myservice
ExecStart=/usr/local/bin/myscript.sh
ExecStartPost=/bin/systemctl start myservice
另一个是myscript.sh
处理整个事情,包括systemctl
.
不过,我发现在服务声明中使用它很尴尬,因为systemctl
可能有 systemd 内置机制与服务交互。有没有更简洁的方法来执行这些操作?
通过(ab?)使用WatchdogSec,服务将在未能在时间内确认时终止。然后它将重新启动,但首先执行脚本。
参考:WatchdogSec
让服务能够在运行时进行备份将是一个更好的服务。