在其他单元关机停止之前运行脚本

在其他单元关机停止之前运行脚本

关闭机器时,我需要在机器上的一组其他服务停止之前运行一个脚本。(在我的情况下,终止 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

相关内容