Использование До для перезапуска процесса, когда он умирает

Я прочитал этот вопрос: " Как мне написать 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
Другие вопросы по тегам