关闭机器时,我需要在机器上的一组其他服务停止之前运行一个脚本。(在我的情况下,终止 EC2 实例。)
我尝试过对这个问题的答案进行各种变化,但都不起作用:如何在使用 systemd 关机时先运行其他所有脚本?(我也查看了 unix.se,但它也不好:https://unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown...而且我也查看了邮件列表。)
我最大的问题是,该问题的原始发帖者想要在卸载某些挂载之前运行脚本,但我对挂载没有任何要求,而是对服务有要求。
我的服务是这样的:
[Unit]
Description=Run script before other things stop on shutdown
Wants=multi-user.target network.target foo.service bar.service
After=multi-user.target network.target foo.service bar.service
[Service]
ExecStart=/bin/true
ExecStop=-/my/script
ExecStopPost=/bin/sleep 5s
RemainAfterExit=yes
Type=oneshot
[Install]
WantedBy=multi-user.target
我在启动后启用并启动了此单元,但关闭实例时它似乎没有运行脚本。我很困惑,我该怎么做?
我在 Debian Stretch 上使用 systemd 232。
答案1
也许是 ExecStop 没有运行,因为 ExecStart 进程已经终止?
如果是的话,请设置ExecStart=/bin/sleep infinity
。