Автоматический перезапуск процесса при его сбое

Автоматический перезапуск процесса при его сбое

У меня есть приложение, которое мне нужно автоматически запускать при запуске ОС. Я работаю в CentOS 6, поэтому я использую скрипт инициализации LSB, размещенный в /etc/init.d. Пока все отлично и работает.

Теперь... кроме того, я бы хотел, чтобы если мое приложение вылетает (закрывается с ошибкой), я хочу, чтобы оно автоматически запускалось снова. В идеале, даже определить максимальное количество попыток. В Info.plist Mac есть ключи KeepAlive Поскольку у меня уже есть chkconfigработающие, мне было интересно, можно ли что-то с этим сделать.

Я знаю, что естьhttp://mmonit.com/monit/но это может быть слишком много для того, что мне нужно.

решение1

Учитывая, что вы управляете скриптом init.d для запуска этого процесса, вы можете просто обернуть выполнение вашего процесса в скрипт init.d следующим образом:

until myserver; do
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
done

Это запустит ваш процесс в цикле until практически навсегда, каждый раз, когда он умрет. Подсчет и т. д. можно ввести так:

cnt=0
max=3
until myserver; do
    let cnt=cnt+1
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
    [ $cnt = $max ] && exit;
done

Связанный контент