Shell 脚本需要运行两次才能按预期工作

Shell 脚本需要运行两次才能按预期工作

我有以下脚本:

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

如果我按行在终端上运行它们,它们会按预期工作。但如果我在 shell 脚本中运行它们,我需要运行两次才能按预期工作。因此,第一次运行是终止进程,第二次运行是再次运行打印服务器。

我想知道我是否可以只运行一次 shell 脚本,它就会终止并重新启动打印服务器。

答案1

当您自己在终端输入命令时,您很可能正在等待每个命令完成。

当相同的命令作为脚本的一部分运行时,它们可以完成得太快。pkill例如,将发送kill命令,但不会等待应用程序退出。

您可以使用命令让脚本等待一段时间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

相关内容