为什么systemd不重新启动服务?

时间:2019-12-28 06:34:20

标签: systemd

请帮助。 我有这样的单位:

[Unit]
Description=Kafka_obed_exporter
Wants=network-online.target
After=network-online.target
After=kafka.service
Requires=kafka.service

[Service]
User=kafka_exporter
Group=kafka_exporter
Type=simple
ExecStart=/usr/local/bin/kafka_exporter --kafka.server=1.1.29.3:9092 --web.listen-address=1.1.29.2:9500
restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target

当我重新启动服务器时,本机尝试仅启动一次,然后重新启动-失败并显示错误:

kafka_exporter.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
kafka_exporter.service: Failed with result 'exit-code'.

我知道其失败的原因-当我手动重新启动单元时,其他kafka节点尚未启动-它开始正常。 我的问题是为什么systemd没有t restart this unit ? as you can see im use options Restart=always, i think systemd will try restart this unit if it not started yet. In systemd log i m:

Dec 28 09:05:29 audmain systemd[1]: Started Apache Zookeeper.
Dec 28 09:05:29 audmain systemd[1]: Started Apache Kafka.
Dec 28 09:05:29 audmain systemd[1]: Started Kafka_obed_exporter.
Dec 28 09:05:29 audmain systemd[1]: Starting Network Time Service...
.......
.......
Dec 28 09:05:36 audmain systemd[1]: kafka_exporter.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Dec 28 09:05:36 audmain systemd[1]: kafka_exporter.service: Failed with result 'exit-code'.

没别的。

1 个答案:

答案 0 :(得分:0)

它不会重新启动,因为您写了restart=always而不是Restart=always。 Unix / Linux上的内容区分大小写。

此外,管理单元依赖性是systemd的主要业务。您可以告诉它在另一个单元之后启动一个单元。请参见digitalocean.com tutorialman systemd.unit