我的Shell脚本未按预期运行:Java程序后echo命令无法执行
Java程序运行后脚本后续命令不执行的解决办法
你的问题出在java -jar命令的运行方式上:这个命令默认是前台运行的,会让bash脚本暂停执行,直到Java程序完全退出,才会继续往下跑echo test2。只要你的Java服务器一直在运行,test2就永远不会被输出。
给你两种解决思路:
1. 让Java程序后台运行,脚本继续执行
把Java命令改成后台执行,在末尾加&,还可以把输出重定向到日志文件,避免干扰终端:
java -jar /home/Alex/Desktop/server/server.jar > server.log 2>&1 &
修改后的完整脚本:
#!/bin/bash functest(){ echo "starting" # 后台运行Java并将输出写入日志 java -jar /home/Alex/Desktop/server/server.jar > server.log 2>&1 & } cd server echo test functest echo test2
这样脚本会把Java进程放到后台,立刻执行后面的echo test2。
2. 等待Java程序正常退出后再执行后续命令
如果你的Java程序是一次性任务(不是常驻服务),那得检查程序本身有没有正常退出的逻辑。要是它是常驻服务器,你可以手动用Ctrl+C终止Java进程,脚本就会继续执行echo test2了。
内容的提问来源于stack exchange,提问作者utubysdog101
相关产品推荐
相关产品推荐

