我是一名有用的助手,可以翻译文本。
我有两个systemd服务
这是我的配置:
当我运行
systemd文档说明
你能否帮我编辑这些服务,使得:
我有两个systemd服务
a
和b
,其中b
是“After”和“BindsTo”a
,b
是一个短命令,每分钟通过systemd计时器启动。这是我的配置:
$ cat /systemd/a.service
[Unit]
After=foo
BindsTo=foo
[Service]
ExecStart=/opt/a/bin/a
Group=lev
User=lev
Restart=Always
WorkingDirectory=/opt/a
$ cat /systemd/b.service
[Unit]
After=a
BindsTo=a
[Service]
ExecStart=/opt/b/bin/b
Group=lev
User=lev
WorkingDirectory=/opt/b
$ cat /systemd/b.timer
[Unit]
[Timer]
OnCalendar=*:0/1:00
当我运行
sudo systemctl stop a
时,服务a
确实停止了,但是当服务b
的计时器运行b
时,在下一分钟开始时它会重新启动。systemd文档说明
BindsTo
声明如果绑定的单元被停止,则此单元也将被停止。
(https://www.freedesktop.org/software/systemd/man/systemd.unit.html#BindsTo=)
我希望通过停止a
,b
也会被停止,并且计时器会被禁用。但事实并非如此。你能否帮忙解释一下为什么不仅重启了 b
(应该失败),还重启了 a
?你能否帮我编辑这些服务,使得:
- 在启动时,先启动
a
,然后再启动b
- 当我使用
sudo systemctl stop a
命令时,b
的计时器不会运行 - 当我使用
sudo systemctl start a
命令时,b
的计时器会重新开始运行
BindsTo
,但我找不到任何文档表明定时器实际上支持BindsTo
。你自己试过了吗?它有效吗?我这周也会花些时间尝试一下。 - Lev Dubinets[Unit]
部分中的每个设置都适用于任何单元。 - duthils