У меня есть следующий скрипт init.d, работающий на Ubuntu 14.04
# Logstash Service
description "Logstash"
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [016]
respawn limit 10 5
# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
console output
setuid tps
chdir /opt/logstash-1.4.2
env LS_HOME=/opt//logstash-1.4.2
env CONFIG_DIR=/opt/config/logstash
env JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64
env SINCEDB_DIR=/opt/config/logstash
env _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
exec $LS_HOME/bin/logstash -f $CONFIG_DIR -vvv | svlogd /opt/logs 2>&1
Когда я вручную убиваю его, выполняя kill -9 <pid>
процесс, он не возрождается. Есть ли способ заставить его возрождаться, если он был завершен?
решение1
Вы не приказали ему возродиться.
Как кулинарная книга Upstartговорит,
6.28
respawn
С помощью этой строфы, всякий раз, когда основной скрипт/exec завершается, без изменения цели задания на остановку, задание будет запущено снова.
6.29
respawn limit
Да этодругойк простому возрождению: указание
respawn limit
не подразумеваетrespawn
.
Другими словами, вы должны установить, respawn
даже если у вас также есть respawn limit
.
решение2
Я думаю, что вы можете использовать файл inittab, чтобы указать ему возродиться.
Запись в нем выглядит так: id:runlevels:action:process
В качестве одного из действий можно установить возрождение.