Ubuntu 系统崩溃后启动服务
我目前运行的一个服务由于一个bug而不断崩溃。 这个bug是已知的,稍后会被修复,但我无法在每次服务崩溃时重新启动它 正常情况下,将使用“service icinga2 restart”重新启动服务。 所以我在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.
/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”路径后重试。