在Debian中启动Jar 7.9
问题描述:
我做了一个可运行的jar,它在我的Debian中运行良好,我想在我的beaglebone板启动时自动打开并在关闭时关闭它。我试着用这个file.sh文件夹的/etc/init.d在Debian中启动Jar 7.9
#!/bin/bash
### BEGIN INIT INFO
# Provides: myscript.sh
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: myscript.sh
### END INIT INFO
# MyApp
#
# description: It lanch the Jar file
case $1 in
start)
/bin/bash /usr/local/bin/myapp-start.sh
;;
stop)
/bin/bash /usr/local/bin/myapp-stop.sh
;;
restart)
/bin/bash /usr/local/bin/myapp-stop.sh
/bin/bash /usr/local/bin/myapp-start.sh
;;
esac
exit 0
我创建也myapp-start.sh和停止这样里面:
#!/bin/bash
/home/java -jar myjar.jar
而且对停车:
#!/bin/bash
# Grabs and kill a process
pid=`ps aux | grep myapp | awk '{print $2}'`
kill -9 $pid
当我推出更新的rc.d myscript.sh默认我收到了: 更新的rc.d:使用基于相关性排序启动
我还能做些什么来解决它?
答
我可以看到几个问题:
-
你不应该缩进
#!/bin/bash
线在你的脚本中。它只会在#!
字符是文件的前两个字符等等时起作用。 (OS内核在脚本文件中对此行进行解码,并且非常挑剔。)该文件还需要在文件权限中设置相应的执行位;例如“ls -l myapp-start.s”需要为用户,组或其他人显示“x”。
-
如果有
#!
线正确的,那么你就可以像这样运行脚本:/usr/local/bin/myapp-start.sh
-
这几乎可以肯定是不正确的:
/home/java -jar myjar.jar
两个问题:
除非你做了奇怪的事情,
/home/java
不是java
命令的正确路径名。您已经使用相对路径指定了JAR文件名。如果/当
java
运行时目前不清楚当前目录是什么,但myjar.jar
文件不太可能位于当前目录中。
用于调试shell脚本像这样的有用的技巧是添加set -x
或set -v
到脚本,看看它在做什么。请参阅man bash
了解详情。
谢谢你的答案,1)是在左边,2)它无法访问我的jar文件(在另一个目录中),3)我试着用java -jar myjar.jar ,其他一些建议? –
即使我把我的jar放入那个目录(这样我暂时解决了我的路径问题),我从update-rc.d收到同样的答案。一些其他的解决方案,使其运作? –
*“其他一些建议?” - 见我最后一段。然后剪切并粘贴脚本尝试执行的实际命令行。 (提示:当“那个”没有被清楚,完全和精确地表述时,建议某人说“我尝试过并且它不起作用”是非常困难的。) –