我有以下脚本:
#!/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