我目前正在实现在Linux VM服务器上将可运行的jar文件作为后台服务。我使用这里找到的示例作为基础,并将start()方法修改为以下内容:
这是start命令的处理程序:
现在我查看日志并发现输出与预期相符 - stub服务器已经成功启动。但是我无法在端口上进行wget请求(我已经使用iptables打开了相关端口),连接被拒绝。
这将设置服务将输出写入日志文件sagepay-stub.log并保存PID以便在调用服务停止方法时使用。start() {
# 启动应用程序
java -jar /home/vagrant/sagepay-stub-1.4.jar >/var/log/sagepay-stub.log 2>&1
PID=$!
echo $PID > pid.txt
}
这是start命令的处理程序:
当我调用这个方法时,我可以看到"Sagepay-stub"的开始输出,但是我被卡在了脚本中。我能做的只有使用Ctrl + C退出,然后会得到如下输出:"Sagepay-stub started."。case "$1" in start)
echo "Starting $APP" start echo "$APP started." ;;
现在我查看日志并发现输出与预期相符 - stub服务器已经成功启动。但是我无法在端口上进行wget请求(我已经使用iptables打开了相关端口),连接被拒绝。
Connecting to localhost|127.0.0.1|:8889... failed: Connection refused.
欢迎提出任何与问题相关的想法。我认为问题在于启动应用程序,然后转向并让其在后台运行。脚本在等待某些内容时被卡住了,而应用程序则已经开始运行。该JAR文件在没有输入的情况下本地运行良好。
如果问题出现在PID命令中(我在另一个线程上找到它作为被接受的答案),那么我该如何将其注释掉,同时仍然能够停止该服务?
对代码的评论也是受欢迎的。
谢谢!