我希望我的服务仅在另一个服务不活动时启动。为此,正如其他问题中所解释的那样,我将执行以下操作:
ExecStartPre=/bin/bash -xc '/usr/bin/systemctl is-active --quiet other-unit.service && exit 1 || exit 0'
但是,操作系统不包含 /bin/bash 的可能性很小。在这种情况下,我希望服务能够启动。我试图通过使用来实现这一点:
ExecStartPre=which bash 2>/dev/null && /usr/bin/bash -xc '/usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service && exit 1 || exit 0' || exit 0
但 systemd 抱怨:
which[1122772]: /usr/bin/which: invalid option -- 'x'
which[1122772]: /usr/bin/which: invalid option -- 'c'
which[1122772]: /usr/bin/which: no && in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
我猜 ExecStartPre= 非常有限。有没有可能实现我想要的?