
У меня есть приложение, которое мне нужно автоматически запускать при запуске ОС. Я работаю в 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