自定义 systemd 服务订单

自定义 systemd 服务订单

当您创建两个或多个自定义 systemd 服务时,您如何知道它们将以哪个顺序运行?这个命令一定会发生吗?

我在做类型 = 空闲这应该意味着

idle 的行为与 simple 非常相似;然而,服务程序的实际执行会被延迟,直到所有活动作业都被调度为止。这可用于避免 shell 服务的输出与控制台上的状态输出交错。请注意,此类型仅用于改进控制台输出,作为通用单位排序工具并无用处,并且此服务类型的效果受到 5 秒超时的影响,之后无论如何都会调用服务程序

下面是我的/etc/systemd/system/myservice1.service

#!/bin/bash

[Unit]
Description=my service
After=default.target

[Service]
Type=idle
ExecStart=/root/my_service1.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

然后我做

{ create /root/my_service.sh }

chmod 700 /root/my_service1.sh

systemctl daemon-reload

systemctl enable my_service1

如果我创建了许多空闲类型的服务,我如何知道这些服务将按什么顺序运行?我确实希望它们仅在系统完全启动并且所有与启动相关的操作都完成后才发生。

然后我计划进行一些自定义do_this.servicedo_that.service我还没有决定如何命名所有东西。

答案1

属性BeforeAfter,包含在[Unit]您的服务部分中,应该允许您在不同的服务之间强加一个顺序系统服务,而不仅仅是服务和“默认”目标(参见例如这里了解更多信息)。

所以,如果你想要myservice1.service之前开始myservice2.service,添加就足够了

Before=myservice2.service

到您的服务定义文件,并且合理地也

After=myservice1.service

到那个myservice2.service

相关内容