2016-05-20 2 views
1

Я написал файл bash, в котором я выполняю java-файл, и он работает правильно, если я его выполняю, но когда я пытаюсь использовать crontab, это не поможет.Выполнение файла bash с java-файлом из crontab

это мой кронтаб:

*/5 * * * * /home/import.sh >/dev/null 2>&1 

это мой Баш файл:

   - me=$(date +%Y-%m-%d) 
       mkdir -p /home/importRequirement"$foldername" 
        { 
        java -jar ImportRequirement1.jar 
        java -jar ImportRequirement1.jar 
        } 

     2>importRequirement"$foldername"/log$(date +%Y-%m-%d-%H-%M-%S).txt 

Я удалил URL.

+0

проверить окружающую среду PATH. Включает ли это расположение команды java? –

+1

Вам, вероятно, необходимо включить абсолютный путь к 'java', а также абсолютный путь к исполняемому файлу jar. –

+0

Вы также должны добавить '/ bin/bash' в выражение cronjob ->' */5 * * * */bin/bash /home/import.sh>/dev/null 2> & 1' – fedorqui

ответ

1

Когда сценарий предназначен для запуска из неинтерактивной среды (cron или init), не устанавливаются никакие обычные свойства, такие как настраиваемый путь или другая переменная среды.

Правило:

  • обеспечить все команды (за исключением самых тех в/бен и/USR/бен) использовать полный путь
  • обеспечить все необходимые переменные окружения установлены

Если вы используете много сценариев, вы можете создать скрипт setenv, который объявляет все переменные среды и создает их для каждой команды, которую вы используете. Здесь он будет содержать (более или менее):

export JAVAHOME=... 
export JAVA=/path/to/java 

Затем вы можете использовать в скрипте:

$(JAVA) -jar ImportRequirement1.jar 

, но здесь снова вы должны либо иметь предыдущий cd ожидаемому каталог или использовать абсолютный путь баночки

+0

tnx alot Serge Ballesta – ace

1

Переменные среды для заданий cron - это не то же самое, что пользователи получают при входе в систему. Дважды проверьте переменные среды, необходимые для запуска вашего скрипта (например, JAVA_HOME и PATH). хрон может не знать, с чем интерпретировать ваш сценарий, вы можете разместить

#!/bin/bash 

на первой строке вашего Баш скрипт.

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