Сценарий оболочки должен быть выполнен дважды для работы как ожидалось

У меня есть следующий сценарий оболочки:

#!/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

Если я выполняю их на терминале на строки, они работают как ожидалось. Но если я выполняю их в сценарии оболочки, я должен выполнить его дважды для работы как ожидалось. Таким образом, первый показ должен уничтожить процесс, и второе должно выполнить сервер печати снова.

Я задаюсь вопросом, могу ли я просто выполнить сценарий оболочки однажды, и он уничтожит и перезапустит сервер печати снова.

2
задан 29 January 2016 в 06:03

1 ответ

При вводе команд в терминал самостоятельно Вы больше, чем, вероятно, ожидаете каждой команды для завершения.

, Когда те же команды выполняются как часть сценария, они могут завершиться слишком быстро. 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
3
ответ дан 2 December 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: