Ausführung von Skripten überwachen

PaulAtreides

Well-Known Member
Ich möchte sichergehen, dass meine Server Skripte laufen. Nach einem Neustart sollen sie erneut gestartet werden und im Falle eines Absturzes eines Skripts soll dieses ebenfalls erneut gestartet werden. Ich habe gesehen, dass es Alternativen wie runit gibt, die alle Services überwachen. rc.d/init wollte ich aber gerne behalten. Wie handhabt ihr das?
 
Nach einem Neustart sollen sie erneut gestartet werden
Die crontab kennt das Keyword @reboot, welches Jobs ausführt wenn der Rechner neu gestartet wird (oder besser gesagt, wenn CRON neu gestartet wird).

und im Falle eines Absturzes eines Skripts soll dieses ebenfalls erneut gestartet werden
Für solche Dinge kann man den den Befehl daemon nehmen, der zum FreeBSD-Base-System gehört.
Der bietet auch noch ein paar andere Optionen die ganz nützlich sind, wenn man Skripte sozusagen als Hintergrunddienst (aka Daemon) ausführt wie z.B. stdout und stderr in eine Datei schreiben oder das Skript unter eiinem bestimmten User-Account ausführen usw. usw. usw.
Und er kennt auch die Option --restart, die ja für das erneute Starten nach Absturz interessant ist.
 
Danke

Ich habe das jetzt so gelöst


/usr/local/etc/rc.d/script

Code:
#!/bin/sh

# PROVIDE: script
# REQUIRE: NETWORKING
# KEYWORD: shutdown

. /etc/rc.subr

name="script"
rcvar="script_enable"

pidfile="/var/run/${name}.pid"
logfile="/var/log/${name}.log"

command="/usr/sbin/daemon"
command_args="\
  -u USER \
  -f \
  -R 5 \
  -H \
  -o ${logfile} \
  -P ${pidfile} \
  /usr/bin/ruby /home/USER/script.rb \
"

load_rc_config $name
run_rc_command "$1"

chmod +x /usr/local/etc/rc.d/script
sysrc script_enable=YES
service script start
 
Zuletzt bearbeitet:
Nur nebenbei bemerkt: Man kann runit ganz einfach neben dem normalen init laufen lassen und muss nicht gleich komplett umsteigen. Ich benutze runit gerne, wenn ich services anpasse, z.B. vor dem Start von exim noch Zertifikate kopiere, da exim keine root-gehörenden Zertifikate lesen kann.
 
Zurück
Oben