Ubuntu 系统崩溃后启动服务

Ubuntu 系统崩溃后启动服务,ubuntu,service,crash,restart,systemd,Ubuntu,Service,Crash,Restart,Systemd,我目前运行的一个服务由于一个bug而不断崩溃。 这个bug是已知的,稍后会被修复,但我无法在每次服务崩溃时重新启动它 正常情况下,将使用“service icinga2 restart”重新启动服务。 所以我在 /etc/systemd/system/multi-user.target.wants/icinga.service 内容包括: [Unit] Description=Icinga2 restart [Service] Type=simple ExecStart=/etc/init.

我目前运行的一个服务由于一个bug而不断崩溃。 这个bug是已知的,稍后会被修复,但我无法在每次服务崩溃时重新启动它

正常情况下,将使用“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

但它不起作用。我做错了什么?

单元文件应该有配置指令来指定单元的行为,对于Icinga2服务,确实需要一个后端,因此基于您作为后端的mysql或
postgresql
您应该在它们作为启动行为可用之后启动它,所以
[Unit]
部分应该有

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

在“服务”部分下,类型应为“分叉”。 Forking适用于使用ExecStart启动的进程,它生成一个子进程,该子进程将成为服务的主进程。启动完成后,父进程将退出

ExecStart
应指向
/usr/sbin/icinga2守护进程-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  

请将服务置于“/usr/lib/systemd/system”路径后重试。