Как мне изменить мой bash сценарий logi c, чтобы он выходил из режима l oop и выходил из самого сценария после запуска процесса с именем custom_app в моей локальной Ubuntu 18.04? Я попытался использовать break и exit внутри оператора if, но безуспешно.
Как только пользовательское приложение запускается, скажем, с 1-й попытки, я выхожу из приложения, run_custom_app. sh задерживается в фоновом режиме и возобновляет попытки 2-го, 3-го, 4-го, 5-го раза. На этом этапе он ничего не должен делать, поскольку приложение уже успешно запущено и пользователь намеренно завершил работу.
Ниже приведено описание run_custom_app. sh используется для запуска моего пользовательского приложения, запускаемого с помощью нажатия кнопки веб-сайта.
Лог сценария c
- Проверьте, запущен ли уже процесс custom_app. Если это так, не запускайте команды в блоке while. Ничего не делать. Выйти из run_custom_app. sh.
Когда процесс custom_app НЕ выполняется, повторите попытку до 5 раз.
После запуска процесса custom_app остановите, пока l oop и выйдите из run_custom_app. sh.
- В случаях, когда были предприняты 5 попыток запуска, но процесс custom_app все еще не запущен, отобразите сообщение для пользователя.
#!/bin/sh
RETRYCOUNT=0
PROCESS_RUNNING=`ps cax | grep custom_app`
# Try to connect until process is running. Retry up to 5 times. Wait 10 secs between each retry.
while [ ! "$PROCESS_RUNNING" ] && [ "$RETRYCOUNT" -le 5 ]; do
RETRYCOUNT="`expr $RETRYCOUNT + 1`"
commands
sleep 10
PROCESS_RUNNING=`ps cax | grep custom_app`
if [ "$PROCESS_RUNNING" ]; then
break
fi
done
# Display an error message if not connected after 5 connection attempts
if [ ! "$PROCESS_RUNNING" ]; then
echo "Failed to connect, please try again in about 2 minutes" # I need to modify this later so it opens a Terminal window displaying the echo statement, not yet sure how.
fi