我一直在努力让我的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的警告
在此之后,一旦我重新启动服务器,该应用程序就不会运行。任何帮助表示赞赏。
感谢。
答案 0 :(得分:2)
运行bash脚本时,它们不会自动从包含它们的同一目录运行。
在启动jar之前,您需要更新脚本以将目录更改为包含脚本的目录:
#!/bin/bash
cd /var/lib/myapp/
java -jar myapp-1.0.0RC.jar &
或者,请参考带有完整路径的jar文件:
#!/bin/bash
java -jar /var/lib/myapp/myapp-1.0.0RC.jar &
答案 1 :(得分:0)
检查您的服务是否已通过chkconfig正确注册
$ chkconfig --list
如果没有,您可以在输出中看到您的服务,请尝试将此行添加到您的脚本
#!/bin/bash
# chkconfig: 2345 95 20
# description: bla bla
# processname: myapp
然后运行
chkconfig --add myapp
有关详细信息,请查看chkconfig