a.h*_*die 5 java linux service jar localhost
我目前正致力于在Linux VM机箱上实现可运行的jar作为后台服务.我已经使用此处的示例作为基础来处理,并将start()方法修改为:
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以在调用服务停止方法时使用.
这是start命令的处理程序:
案例"$ 1"开始)
Run Code Online (Sandbox Code Playgroud)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.
Run Code Online (Sandbox Code Playgroud)
任何有关问题的想法都值得赞赏.我认为问题在于启动应用程序然后继续运行并让它在后台运行.应用程序启动时,脚本会等待某些东西.罐子在没有输入的情况下运行良好.
如果问题出在PID命令(我在另一个线程上找到的接受答案),我该如何评论这些命令并仍然可以停止服务?
对代码的评论也欢迎
谢谢
你有没有忘记'java -jar [application stuff]'之后的'&',以便在该行之后继续执行.
它与在控制台中运行命令完全相同.'&'之后确保控制台在应用程序启动后可用.
这就是它打印"Sagepay-stub"的原因.一旦你点击ctrl-c,因为那是你杀死java进程并继续bash脚本.