Использование До для перезапуска процесса, когда он умирает
Я прочитал этот вопрос: " Как мне написать bash-скрипт для перезапуска процесса, если он умирает".
Решение состоит в том, чтобы:
until myserver; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
Будет ли это работать для процессов Tomcat/Jetty, которые запускаются из сценария?
Я проверяю успешность с "kill", чтобы видеть, перезапускается ли процесс?
2 ответа
Если скрипт возвращает коды выхода, указанные в ответе по этой ссылке, он должен работать. Если вы вернетесь и прочитаете этот ответ еще раз, это означает, что вы не должны использовать kill
, С помощью until
будет проверяться на запуск, потому что неудачный запуск должен возвращать ненулевой код завершения. Замените "myserver" на имя вашего скрипта.
Ваш сценарий может иметь ловушки, которые обрабатывают различные сигналы и другие условия. Эти обработчики ловушек могут устанавливать соответствующие коды выхода.
Вот демо. Раковина (echo "running 'dummy'"; sleep 2; exit $result)
стоит для вашего скрипта:
result=0
until (echo "running 'dummy'"; sleep 2; exit $result)
do
echo "Server 'dummy' crashed with exit code $?. Respawning.." >&2
sleep 1
done
Попробуй это с провальным "манекеном", установив result=1
и работает until
цикл снова
while true
do
if pgrep jett[y] 1>/dev/null;then
sleep 1
else
# restart your program here
fi
done