带多个execStart的Systemd

带多个execStart的Systemd,第1张

带多个execStart的Systemd

如果

Type=simple
在你的单位的文件,你只能指定一个ExecStart,但您可以添加尽可能多的
ExecStartPre
ExecStartPost
但这些都不是适合长期运行的命令,因为它们是串行执行,一切都开始一个开始下一个杀害前。

如果

Type=oneshot
可以指定多个ExecStart,则它们将以串行方式而不是并行运行。

如果要并行运行多个单元,则可以执行以下 *** 作:

如果它们在1个参数上不同

您可以使用模板单元,因此可以创建一个

/etc/systemd/system/foo@.service
注意:(
@
一点很重要)。

[Unit]Description=script description %I[Service]Type=simpleExecStart=/script.py %iRestart=on-failure[Install]WantedBy=multi-user.target

然后执行:

$ systemctl start foo@parameter1.service foo@parameter2.service

要么…

目标依赖

您可以创建链接到单个目标的多个单元:

#/etc/systemd/system/bar.target[Unit]Description=bar targetRequires=multi-user.targetAfter=multi-user.targetAllowIsolate=yes

然后您只需将.service单元修改为

WantedBy=bar.target

#/etc/systemd/system/foo@.service[Unit]Description=script description %I[Service]Type=simpleExecStart=/script.py %iRestart=on-failure[Install]WantedBy=bar.target

然后,您只需并行启用所需的foo服务,然后启动bar目标,如下所示:

$ systemctl daemon-reload$ systemctl enable foo@param1.service$ systemctl enable foo@param2.service$ systemctl start bar.target

注意: 这适用于任何类型的单位,而不仅仅是模板单位。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4981937.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存