
У меня есть двоичный файл, который перестает запускаться каждые несколько недель, вы можете просто запустить его снова, и он будет работать еще несколько недель. Программное обеспечение не идеально, но оно было бы достаточно идеальным, если бы оно перезапускалось автоматически.
Как лучше всего настроить автоматическую проверку того, запущен ли исполняемый файл, и запуск его, если он не запущен?
решение1
Элегантный способ управления вашей программой — создание скрипта с механикой PID-файла, который будет сохранять PID программы в файл и проверять с его помощью, выполняется ли процесс:
#!/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
Теперь периодически запускайте скрипт (например, вкронтаб).