在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:使用基于相关性排序启动

我还能做些什么来解决它?

我可以看到几个问题:

  1. 你不应该缩进#!/bin/bash线在你的脚本中。它只会在#!字符是文件的前两个字符等等时起作用。 (OS内核在脚本文件中对此行进行解码,并且非常挑剔。)

    该文件还需要在文件权限中设置相应的执行位;例如“ls -l myapp-start.s”需要为用户,组或其他人显示“x”。

  2. 如果有#!线正确的,那么你就可以像这样运行脚本:

    /usr/local/bin/myapp-start.sh 
    
  3. 这几乎可以肯定是不正确的:

    /home/java -jar myjar.jar 
    

    两个问题:

    • 除非你做了奇怪的事情,/home/java不是java命令的正确路径名。

    • 您已经使用相对路径指定了JAR文件名。如果/当java运行时目前不清楚当前目录是什么,但myjar.jar文件不太可能位于当前目录中。


用于调试shell脚本像这样的有用的技巧是添加set -xset -v到脚本,看看它在做什么。请参阅man bash了解详情。

+0

谢谢你的答案,1)是在左边,2)它无法访问我的jar文件(在另一个目录中),3)我试着用java -jar myjar.jar ,其他一些建议? –

+0

即使我把我的jar放入那个目录(这样我暂时解决了我的路径问题),我从update-rc.d收到同样的答案。一些其他的解决方案,使其运作? –

+0

*“其他一些建议?” - 见我最后一段。然后剪切并粘贴脚本尝试执行的实际命令行。 (提示:当“那个”没有被清楚,完全和精确地表述时,建议某人说“我尝试过并且它不起作用”是非常困难的。) –