崩溃后系统启动服务

时间:2016-02-18 08:50:26

标签: ubuntu service crash restart systemd

我目前运行的服务因为一个错误而一直崩溃。 该错误已知并将在稍后修复,但我不能在每次崩溃时重新启动该服务。

Normaly将使用" service icinga2 restart"重新启动服务。 所以我在

创建了一个文件
/etc/systemd/system/multi-user.target.wants/icinga.service

内容为:

[Unit]
Description=Icinga2 restart

[Service]
Type=simple
ExecStart=/etc/init.d/icinga2 restart
Restart=always
RestartSec=0

但它没有工作。我做错了什么?

1 个答案:

答案 0 :(得分:0)

单位文件应该有配置指令指定单位的行为,而Icinga2服务确实需要一个后端,所以根据你的后端mysqlpostgresql,你应该在那些之后启动它可用作开始行为,因此[Unit]部分应该

After=syslog.target network.target postgresql.service mariadb.service

在服务部分Type下应该分叉。 分叉是针对从ExecStart开始的进程生成的子进程,它成为服务的主要进程。启动完成后,父进程退出。

ExecStart应指向/usr/sbin/icinga2 daemon -d您还应为此提供PIDFile位置。

这是我的文件副本:

[Unit]
Description=Icinga host/service/network monitoring system
After=syslog.target network.target postgresql.service mariadb.service carbon-cache.service

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/icinga2
ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2
ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG}
PIDFile=/run/icinga2/icinga2.pid
ExecReload=/usr/lib/icinga2/safe-reload /etc/sysconfig/icinga2

[Install]
WantedBy=multi-user.target

EnvironmentFile看起来像:

DAEMON=/usr/sbin/icinga2
ICINGA2_CONFIG_FILE=/etc/icinga2/icinga2.conf
ICINGA2_RUN_DIR=/run
ICINGA2_STATE_DIR=/var
ICINGA2_PID_FILE=$ICINGA2_RUN_DIR/icinga2/icinga2.pid
ICINGA2_ERROR_LOG=/var/log/icinga2/error.log
ICINGA2_STARTUP_LOG=/var/log/icinga2/startup.log
ICINGA2_LOG=/var/log/icinga2/icinga2.log
ICINGA2_USER=icinga
ICINGA2_GROUP=icinga
ICINGA2_COMMAND_GROUP=icingacmd