systemd 如何在 init 0 或 init 6 之后立即执行第一件事

systemd 如何在 init 0 或 init 6 之后立即执行第一件事

我的/etc/systemd/system/myshutdown.service

#!/bin/bash

[Unit]
Description=license administration shutdown
DefaultDependencies=no
After=final.target

[Service]
Type=oneshot
ExecStart=/root/scripts/license_administration_shutdown.sh

[Install]
WantedBy=final.target

license_administration_shutdown.sh执行了一些操作lmutil lmdown -force来杀死我启动的那些相应的服务/root/scripts/license_administration.sh以及相应的 systemd 服务。

init 6我的问题是我希望我的关闭脚本立即发生,或者作为完成后的第一件事之一init 0,我的上述 systemd 服务语法是否正确?我的目的是杀死那些我认为造成的 lmgrd 进程会话中的停止作业正在运行警告关闭/重启时会出现 1 分 30 秒的不便延迟。

上述服务是否可以添加或更改更多语法,以赋予其更高的优先级或确保它在完成init 6后立即发生?init 0

答案1

与其创建服务停止服务,不如ExecStopPost向许可证管理器服务添加操作可能是最好的选择。

如果许可证管理器使用默认依赖项,那么它会自动与 shutdown.target 发生冲突。如果它不使用默认依赖项,您可以将其添加Conflicts=shutdown.target到许可证管理器的服务描述中。

当系统关闭或重新启动时,它通过调用 shutdown.target 来实现,该目标(大多数情况下)会自动与每个正在运行的服务发生冲突。您的许可证管理器服务将停止,并且作为其一部分,它将运行 指定的命令ExecStopPost=

相关内容