
Ich habe eine Binärdatei, die alle paar Wochen nicht mehr läuft. Man kann sie einfach wieder starten und sie läuft noch ein paar Wochen weiter. Die Software ist nicht perfekt, aber sie wäre perfekt genug, wenn sie automatisch neu gestartet würde.
Wie kann ich am besten etwas so einrichten, dass automatisch geprüft wird, ob die Binärdatei ausgeführt wird, und diese gestartet wird, wenn dies nicht der Fall ist?
Antwort1
Eine elegante Möglichkeit zur Steuerung Ihres Programms besteht in der Erstellung eines Skripts mit PID-Dateimechanik, das die PID des Programms in einer Datei speichert und damit prüft, ob der Prozess noch läuft:
#!/bin/bash
PID_FILE=/var/run/rerun.pid # need root permission to store in this directory
EXEC=/usr/bin/gedit # replace it with actual executable
function run() {
# execute the program
$EXEC &
# save its PID
echo $! > $PID_FILE
}
if [ -e $PID_FILE ]; then
# check if program is still running
pid=$(<$PID_FILE)
# find the proper process
ps --pid $pid|grep -q `basename $EXEC`
if [ $? != 0 ]; then
# not found - rerun
run
fi
else
# no PID file - just execute
run
fi
Führen Sie das Skript nun regelmäßig aus (z. B. incrontab).