2016-02-13 65 views
2

我做了一個可運行的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

我可以看到幾個問題:

  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

*「其他一些建議?」 - 見我最後一段。然後剪切並粘貼腳本嘗試執行的實際命令行。 (提示:當「那個」沒有被清楚,完全和精確地表述時,建議某人說「我嘗試過並且它不起作用」是非常困難的。) –