Ich habe das folgende init.d-Skript unter Ubuntu 14.04 laufen
# 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
Wenn ich es manuell durch Ausführen beende, kill -9 <pid>
wird der Prozess nicht neu gestartet. Gibt es eine Möglichkeit, ihm bei Beendigung mitzuteilen, dass er neu gestartet werden soll?
Antwort1
Du hast ihm nicht gesagt, dass es wieder erscheinen soll.
Als Upstart-Kochbuchsagt,
6.28
respawn
Mit dieser Strophe wird der Job immer dann erneut gestartet, wenn das Hauptskript/die Hauptausführung beendet wird, ohne dass das Ziel des Jobs auf „Stoppen“ geändert wurde.
6.29
respawn limit
Ja das istanderszu einem einfachen Respawn: die Angabe
respawn limit
bedeutet nichtrespawn
, dass …
Mit anderen Worten: Sie müssen festlegen, respawn
auch wenn Sie auch haben respawn limit
.
Antwort2
Ich glaube, Sie können die Inittab-Datei verwenden, um ihm den Respawn mitzuteilen.
Ein Eintrag darin sieht so aus: id:runlevels:action:process
Als eine der Aktionen kann Respawn festgelegt werden.