/usr/lib/systemd/system-shutdown/或者对Debian来说
/lib/systemd/system-shutdown/让它在重新启动或关闭时执行。从…
https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html:
在执行实际的系统halt/poweroff/reboot/kexec systemd之前,关闭将运行/usr/lib/systemd/ system中的所有可执行文件,并向它们传递一个参数:“停用”、“断电”、“重新启动”或"kexec",这取决于所选的操作。此目录中的所有可执行文件都是并行执行的,在所有可执行文件完成之前,不会继续执行该操作。
我的脚本在如何在Debian 9或Raspbian 8 (Jessie)关机时运行脚本中被描述为:
#!/bin/sh
touch /test然而,它似乎没有运行在我的Debian系统上,我甚至把它报告为错误。
发布于 2017-02-24 15:55:39
实际上,脚本正在运行。正如Bigon所指出的,在bug报告中,touch只是不能生效,因为文件系统已经被挂载,只有在执行/lib/systemd/system-shutdown/中的脚本时才能读取。
可以通过在touch之前挂载和fs读写来证明这一点:
#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /现在,/test实际上是在重新启动之后出现的。
然而,这也意味着在这个文件夹中运行我的脚本将是没有用的,因为它会发生得太晚。
为了写入日志文件等,需要按照比贡的建议,通过服务更早地运行脚本。我在如何在Debian 9或Raspbian 8 (Jessie)关机时运行脚本解释这一点。
发布于 2017-02-24 14:19:57
因此,如果您想在机器关闭期间运行脚本,则需要添加一个.service文件,请参阅:如何在关闭前运行具有系统的脚本?
/lib/systemd/system-shutdown/专为特殊情况保留,并在关机/重新引导过程的末尾执行。
https://unix.stackexchange.com/questions/347306
复制相似问题