【发布时间】:2014-09-14 19:47:39
【问题描述】:
我一直在尝试让我的 Java 应用程序在启动后作为后台守护程序运行。我已按照最佳答案here 中给出的说明进行操作,但无济于事。
这是我的 /etc/init.d/myapp 文件:
#!/bin/bash
# MyApp
#
# description: bla bla
case $1 in
start)
/bin/bash /var/lib/myapp/start.sh
;;
stop)
/bin/bash /var/lib/myapp/stop.sh
;;
restart)
/bin/bash /var/lib/myapp/stop.sh
/bin/bash /var/lib/myapp/start.sh
;;
esac
exit 0
至于 /var/lib/myapp/start.sh,它看起来像这样:
#!/bin/bash
java -jar myapp-1.0.0RC.jar &
并且在通过 ssh 从终端运行时可以正常工作。
我还运行了update-rc.d myscript defaults 命令,但只收到了有关标题和 LSB 的警告
在此之后,一旦我重新启动服务器,应用程序就不会运行。任何帮助表示赞赏。
谢谢。
【问题讨论】:
-
所有脚本(init 脚本、start.sh 和 stop.sh)都可以执行吗?手动运行
/etc/init.d/myapp start会发生什么? -
@AndrewStubbs all files have been given 777 ...运行 myapp start 手动给出“无法访问 jarfile ....”这似乎是问题所在,但是,jar 在同一个文件夹中作为 start.sh
-
@AndrewStubbs 啊,我们走了...我现在明白了,所以即使我运行与 jar 文件位于同一文件夹中的脚本,主路径仍然保持不变。在运行 start.sh 之前将 cd /var/lib/myapp 添加到 /etc/init.d/myapp 文件就可以了。谢谢
标签: java bash unix startup init.d