如何更改 systemd 关闭脚本的时间限制?

如何更改 systemd 关闭脚本的时间限制?

我有一个脚本,想在 CentOS 7 机器关机前运行。上一个问题详细描述了使用 systemd 执行此操作的过程。基本上,我只需将要执行的脚本放入其中/usr/lib/systemd/system-shutdown/,它就会自动运行。

这可行,但我的脚本可能需要一段时间(几分钟)。似乎有 90 秒的超时,之后我的脚本被终止,系统继续停止。我怎样才能改变这个时间限制?

基于在这里讨论,我尝试设置DefaultTimeoutStartSec=infinityDefaultTimeoutStopSec=infinityin /etc/systemd/system.conf,但没有达到预期的效果。

编辑: 我进一步挖掘并找到了原因:当关闭脚本以这种方式运行时,它们由二进制文件执行systemd-shutdown。其源码可以可以在这里找到。具体来说,这段代码负责执行脚本:

execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments);

DEFAULT_TIMEOUT_USEC定义basic/def.h如下:

#define DEFAULT_TIMEOUT_USEC (90*USEC_PER_SEC)

所以似乎有一个硬编码的 90 秒限制,使得这个机制对我的需要毫无用处。还有什么其他方法适合在关机时运行脚本?我可以创建自己的 systemd 服务作为WantedBy停止目标吗?我想在文件系统以只读方式重新安装后运行该脚本(在该过程中已经很晚了)。

相关内容