【发布时间】:2013-10-15 09:57:49
【问题描述】:
我目前正致力于在 Linux 虚拟机上实现一个可运行的 jar 作为后台服务。我使用找到的示例 here 作为基础,并将 start() 方法修改为:
开始(){
#启动应用程序
java -jar /home/vagrant/sagepay-stub-1.4.jar >/var/log/sagepay-stub.log 2>&1
PID=$!
echo $PID > pid.txt
}
这将设置服务以将输出写入日志 sagepay-stub.log 并保存 PID 以供调用服务停止方法时使用。
这是启动命令的处理程序:
案例“$1”开始)
echo "Starting $APP" start echo "$APP started." ;;
当我调用该方法时,我得到“Starting Sagepay-stub”输出,但随后我被困在脚本中。我所能做的就是 Ctrl & C 退出,这给了我输出:
“Sagepay-stub 已启动。”
现在我查看日志并看到输出与预期一样 - 存根服务器已成功启动。但我无法在端口上获取(我已经使用 iptables 打开了相关端口) - 连接被拒绝:
Connecting to localhost|127.0.0.1|:8889... failed: Connection refused.
感谢您对问题所在的任何想法。我认为问题在于启动应用程序然后继续并让它在后台运行。脚本在应用程序启动时卡住等待某些东西。 jar 在本地运行良好,无需输入。
如果问题出在 PID 命令上(我在另一个线程上找到了已接受的答案),我该如何注释掉这些命令并仍然能够停止服务?
也欢迎评论代码
谢谢
【问题讨论】:
标签: java linux service jar localhost