首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在/usr/lib/systemd/system-关机/在重新启动或关闭时执行脚本?

如何在/usr/lib/systemd/system-关机/在重新启动或关闭时执行脚本?
EN

Unix & Linux用户
提问于 2017-02-24 11:53:01
回答 2查看 18.3K关注 0票数 8

根据这个答案这个错误报告,您可以简单地将脚本放到

代码语言:javascript
复制
/usr/lib/systemd/system-shutdown/

或者对Debian来说

代码语言:javascript
复制
/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)关机时运行脚本中被描述为:

代码语言:javascript
复制
#!/bin/sh
touch /test

然而,它似乎没有运行在我的Debian系统上,我甚至把它报告为错误

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-02-24 15:55:39

实际上,脚本正在运行。正如Bigon所指出的,在bug报告中,touch只是不能生效,因为文件系统已经被挂载,只有在执行/lib/systemd/system-shutdown/中的脚本时才能读取。

可以通过在touch之前挂载和fs读写来证明这一点:

代码语言:javascript
复制
#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /

现在,/test实际上是在重新启动之后出现的。

然而,这也意味着在这个文件夹中运行我的脚本将是没有用的,因为它会发生得太晚。

为了写入日志文件等,需要按照比贡的建议,通过服务更早地运行脚本。我在如何在Debian 9或Raspbian 8 (Jessie)关机时运行脚本解释这一点。

票数 6
EN

Unix & Linux用户

发布于 2017-02-24 14:19:57

因此,如果您想在机器关闭期间运行脚本,则需要添加一个.service文件,请参阅:如何在关闭前运行具有系统的脚本?

/lib/systemd/system-shutdown/专为特殊情况保留,并在关机/重新引导过程的末尾执行。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/347306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档