“要求”似乎在systemd中不起作用

努力工作

我的系统中有两项服务:A和B。在启动服务AI之前,请先进行一些检查自动化。如果检查失败的服务A,则无需启动。您可能会说我可以使用ExecStartPre或ExecStartPre。是的,但是它不能停止服务A的启动。所以我想在systemd中使用“ require”,创建一个新的服务B,其配置文件如下所示:

[Unit]
Description=api
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
Before=kubelet.service

[Service]

ExecStart=/bin/bash /root/check_init.sh 
Restart=no

[Install]
WantedBy=multi-user.target

/root/check_init.sh像这样:

#!/bin/bash
exit 1

服务如下配置:

[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
After=api.service
Requires=api.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
            $KUBE_LOGTOSTDERR \
            $KUBE_LOG_LEVEL \
            $KUBELET_API_SERVER \
            $KUBELET_ADDRESS \
            $KUBELET_PORT \
            $KUBELET_HOSTNAME \
            $KUBE_ALLOW_PRIV \
            $KUBELET_POD_INFRA_CONTAINER \
            $KUBELET_ARGS
Restart=on-failure

[Install]
WantedBy=multi-user.target

我以为服务B启动失败,因此服务A也必须失败。但是,服务A已启动。我的配置有什么问题吗?谢谢!

Sourcejedi

您缺少Type=oneshot第一项服务-您实际上并不是在等待检查完成!

(最初我建议RemainAfterExit=yes在首次使用也使用。但是我认为这不是必需的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章