У меня есть следующий сценарий оболочки:
#!/bin/sh
# 1. Kill the process along with the screen
/usr/bin/pkill -f reportPrintingServer.jar
# 2. Start the printing server again.
/usr/bin/screen -S proRps -d -m /usr/bin/java -jar /opt/projects/pro/assets/report_printing_server/reportPrintingServer.jar
Если я выполняю их на терминале на строки, они работают как ожидалось. Но если я выполняю их в сценарии оболочки, я должен выполнить его дважды для работы как ожидалось. Таким образом, первый показ должен уничтожить процесс, и второе должно выполнить сервер печати снова.
Я задаюсь вопросом, могу ли я просто выполнить сценарий оболочки однажды, и он уничтожит и перезапустит сервер печати снова.
При вводе команд в терминал самостоятельно Вы больше, чем, вероятно, ожидаете каждой команды для завершения.
, Когда те же команды выполняются как часть сценария, они могут завершиться слишком быстро. pkill
, например, отправит команду уничтожения, но не будет ожидать приложения для выхода.
можно заставить сценарий ожидать количества времени с помощью эти sleep
команда.
, Например:
/usr/bin/pkill -f reportPrintingServer.jar
# Wait a few seconds
sleep 5
/usr/bin/screen -S proRps -d -m /usr/bin/java -jar /opt/projects/pro/assets/report_printing_server/reportPrintingServer.jar