2016-02-13 5 views
2

Я сделал runnable jar, и это хорошо работает в моем Debian, я хочу автозапускать его, когда начинается моя доска beaglebone, и убейте ее, когда она закроется. Я пытался с этим file.sh внутри папки /etc/init.dЗапустить банку в Debian 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 

, когда я запустить myscript.sh по умолчанию обновление-rc.d я получил его: обновление-rc.d: с использованием зависимостей, основанный загрузки последовательности

Что еще я могу сделать, чтобы решить эту проблему?

ответ

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 будет находиться в текущем каталоге.


полезный трюк для отладки скриптов, как это добавить set -x или set -v в сценарий, чтобы увидеть, что он делает. Пожалуйста, обратитесь к man bash за информацией о том, что это делает.

+0

Благодарим за ответ, 1) находится справа налево, 2) он не может получить доступ к моему файлу jar (находится в другом каталоге), 3) я попытался с java -jar myjar.jar тоже , некоторые другие советы? –

+0

Даже если я поставил свой jar inisde в этот каталог (таким образом я временно разрешаю проблему с путём), я получаю тот же ответ от update-rc.d. Некоторые другие решения, чтобы сделать его работоспособным? –

+0

* «Некоторые другие советы?» * - См. Мой последний абзац.Затем вырезаем и вставляем фактическую командную строку, которую пытается выполнить скрипт. (Подсказка: очень сложно посоветовать того, кто говорит: «Я пробовал это, и это не сработало», когда «это» не ясно, полностью и точно указано.) –

 Смежные вопросы

  • Нет связанных вопросов^_^