【问题标题】:Launch a Jar in Debian 7.9在 Debian 7.9 中启动一个 Jar
【发布时间】:2016-05-24 08:40:08
【问题描述】:

我做了一个可运行的 jar,它在我的 Debian 中运行良好,我想在我的 beaglebone 板启动时自动启动它,并在它关闭时杀死它。我尝试在文件夹 /etc/init.d 中使用这个 file.sh

#!/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

当我启动 update-rc.d myscript.sh 默认值时,我收到了它: update-rc.d: 使用基于依赖的启动排序

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

【问题讨论】:

    标签: java bash debian sh beagleboneblack


    【解决方案1】:

    我可以看到几个问题:

    1. 您不应在任何脚本中缩进#!/bin/bash 行。仅当 #! 字符是文件的前两个字符时,它才会起作用,等等。 (操作系统内核将这一行解码成一个脚本文件,非常挑剔。)

      该文件还需要在文件的权限中设置适当的执行位;例如“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 了解详情。

    【讨论】:

    • 谢谢你的回答,1)在左边,2)它无法访问我的jar文件(在另一个目录中),3)我用java试过 - jar myjar.jar 也是,其他一些建议?
    • 即使我将我的 jar 放入该目录(通过这种方式我暂时解决了我的路径问题),我也会从 update-rc.d 收到相同的答案。其他一些使其可操作的解决方案?
    • “其他一些建议?” - 见我的最后一段。然后剪切并粘贴脚本尝试执行的实际命令行。 (提示:当“那个”没有清楚、完整和准确地表述时,很难建议有人说“我试过了,但没用”。)
    • 提示 2:这东西不是火箭科学......但是你采取随机尝试各种事情的方法,而不了解它们为什么会起作用/不起作用,那么它就像伏都教 / 黑魔法。
    • 提示 3:您可能没有考虑过的一件事是“无法访问文件”问题可能是由于目录或文件权限问题造成的。或者沙盒……如果您在 SE-Linux 处于“强制”模式的服务器上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多