Ubuntu 16 - 如何让 Systemd 在启动条件失败时继续尝试启动服务?



我有一个用于kafka的系统单元文件,如下所示。

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
After=network.target remote-fs.target kafka-zookeeper.service
[Service]
Type=simple
User=nano
Group=nano
Environment=JAVA_HOME=/usr/java/jdk1.8.0_102
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
[Install]
WantedBy=multi-user.target
RestartSec=2s
Restart=always

动物园管理员单位文件。

[Service]
Type=simple
User=nano
Group=nano
Environment=JAVA_HOME=/usr/java/jdk1.8.0_102
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
RestartSec=2s
Restart=always

有时我观察到 kafka 处于停止状态并执行systemctl status kafka.service向我显示以下消息

ubuntu@platform3:/usr/lib/systemd/system$ sudo systemctl status kafka.service
● kafka.service - Kafka Service
Loaded: loaded (/usr/lib/systemd/system/kafka.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Condition: start condition failed at Mon 2019-03-25 17:56:30 UTC; 10h ago

在检查日志时,似乎在执行sudo systemctl start kafka.service时,动物园管理员没有运行。所以前提条件没有满足,卡夫卡也没有开始。

但过了一段时间,动物园管理员启动并运行,但即便如此,卡夫卡也没有启动。有人可以让我知道是否有办法让我 systemd 继续尝试启动 kafka,而不是像现在这样满足先决条件时停止一次?

Require=中使用kafka-zookeeper.service而不是After=。这将完成,您的服务将首先查看 zookeeper 是否正在运行,如果它没有运行,它将尝试启动它。

基于文档:http://manpages.ubuntu.com/manpages/bionic/man5/systemd.unit.5.html

相关内容

最新更新