linux - 在停用另一个服务之前激活并运行 oneshot 服务

标签 linux service systemd

我有一个 oneshot 类型的服务,我希望在停用另一个服务之前运行该服务。换句话说,每当其他服务收到停用信号时,我都希望我的服务激活、运行其进程并终止。只有当我的服务完成后,其他服务才被允许停用。

如何在 systemd 中实现此目的?

最佳答案

有一种可能的方法,在要停用的服务文件的 [Unit] 部分中使用 OnFailure=xyz.service ,其中 xyz.service 将是您要激活的服务。

现在有一个缓存,如果您想在运行进程后终止新激活的服务并保持进程运行,则必须使用 shell 脚本运行该服务并通过以下方式运行该脚本 xyz.service 文件中的 ExecStart=/bin/sh lmn.sh

否则你可以直接给出ExecStart=/usr/bin/hello来运行你的进程。在这里,您的服务文件将处于事件状态,直到您的进程运行为止。

例如。正在停用的服务文件。

[Unit]
Description=...
OnFailure=xyz.service

[Service]
.
.
.

xyz.service 文件

[Unit]
.
.

[Service]
.
.
ExecStart=/bin/sh lmn.sh
.
.

ExecStart=/usr/bin/hello

关于linux - 在停用另一个服务之前激活并运行 oneshot 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074092/

相关文章:

service - 使用更改的用户帐户密码运行的服务会发生什么情况?

linux - 行缓冲猫

windows - 如何在 Windows 上创建每个用户的服务?

linux - golang 使用父进程命名空间在 linux 中读取文件

tomcat - 为什么我们在应用程序/服务中需要关闭端口和启动端口?

python 应用程序(守护进程)和 systemd fedora

linux - 为什么systemd会清理环境变量?

python - 如何在 Ubuntu 中查看 systemd 服务日志

linux - 脚本在 CentOS 上运行良好,但在 RHEL5 上运行不佳

linux - 需要对 Linux bash 内置 exec 命令行为的解释