У меня есть несколько приложений, которые должны постоянно работать на моем ноутбуке.
Я использую скрипт bash для запуска этих приложений. В моем сценарии у меня есть цикл, который выглядит примерно так:
while true;
do
xterm
done
Это запускает приложение ( xterm
в данном случае), и если приложение вылетает, цикл запускает его снова.
Это имеет недостаток в том, что нет «чистого» выхода из этого цикла. Таким образом, даже если намерение пользователя - закрыть xterm
, цикл запускает его снова.
Есть ли способ запустить приложение из bash-скрипта, посмотреть, запущено ли оно, перезапустить его, если скрипт рухнул, или ничего не делать, если пользователь закрыл его правильно?
while xterm; do true; done
while ! xterm; do :; done
!
.В
while
условии вы можете проверить, был ли статус выходаxterm
успешным или нет, примерно так:$?
переменная содержит состояние выхода последней выполненной команды.источник
Я предложу вам использовать.
до xterm; сделать эхо "программа завершилась со статусом $?" сделано
Это перезапустит вашу программу, если она будет убита.
источник
Попробуйте использовать supervisor очень просто и легко добавить программу или скрипт для запуска . В вашем случае, как минимум, вам нужно,
command
и, возможно,exitcodes
в разделе Programx для настройки.По умолчанию
exitcodes
0,2, значит,В общем, это то, что вам нужно: перезапустите его, если скрипт потерпел крах, или ничего не сделайте, если пользователь закрыл его правильно (или скрипт успешно завершен)
попробуйте сначала самую простую конфигурацию:
Для большей гибкости смотрите документацию файла конфигурации .
источник