在其他设备停机前运行脚本

2rs*_*2ts 5 linux debian shutdown systemd debian-stretch

在关闭机器时,我需要在机器上的一组其他服务停止之前运行脚本。(就我而言,终止 EC2 实例。)

我已经尝试了这个问题的答案的变体,但没有任何效果:如何在使用 systemd 关闭时在其他所有内容之前运行脚本?(我也看了 unix.se,但它也不好:https ://unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown .. . 我也查看了邮件列表。)

我最大的问题是该问题的 OP 想在卸载某些挂载之前运行脚本,但我对挂载没有任何要求,而是对服务有任何要求。

我的服务是这样的:

[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
Run Code Online (Sandbox Code Playgroud)

我在启动后启用并启动了这个单元,但是当我关闭实例时它似乎没有运行脚本。我不知所措,我该怎么办?

我在 Debian Stretch 上使用 systemd 232。

Ray*_*rth 0

也许 ExecStop 没有运行,因为 ExecStart 进程已经终止?

如果是这种情况,请设置ExecStart=/bin/sleep infinity.