在关机协议开始时运行脚本(而不是在结束时)?

在关机协议开始时运行脚本(而不是在结束时)?

是否可以运行脚本关闭?这意味着系统仍然完全正常运行。

我尝试将关机脚本放入 中/lib/systemd/system-shutdown/test-script。它将被执行,但据我了解,它仅在关机前立即执行。例如,磁盘已以只读模式安装。这可以修复,但使用以下命令包装脚本:

#!/bin/bash
mount -oremount,rw /
... do something ...
mount -oremount,ro /

我需要但无法实现的是互联网连接。执行脚本时,互联网连接似乎不再可用。

是否可以在关机协议开始时运行脚本?

我正在使用 Ubuntu 16.04 进行测试。

答案1

我找到了答案https://unix.stackexchange.com/q/39226/29509

总而言之,这个解决方案对我有用(在 Ubuntu 16.04 上):

创建文件/etc/systemd/system/my-cleanup.service

[Unit]
Description=Test cleanup at shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/path/to/my-cleanup-script.sh

[Install]
WantedBy=multi-user.target

(假设关机脚本在下可用/path/to/my-cleanup-script.sh并且可以执行。)

最后,通过以下方式启用 systemd 服务:

sudo systemctl enable my-cleanup.service
sudo systemctl start my-cleanup.service

答案2

关于答案 1。我相信该解决方案将在关机“期间”起作用,但正如 OP 所问it will run right at the begin of the shutdown,我不确定。
此链接更明确地说明了关机期间执行脚本的时间:http://ccm.net/faq/3348-execute-a-script-at-startup-and-shutdown-on-ubuntu
请注意,我没有在我的系统中进行测试,我只是传达我的发现。

相关内容