2014-06-13 2 views
0

Я следующий сценарий:Shell Script с помощью Crontab - Start Jetty, отлично работает вручную, но не через кронтаб

#!/bin/bash 
jettyPid=`pgrep -f solr` 

if [ "$jettyPid" == "" ] 
then 
    /etc/init.d/jetty start & 
fi 

Он отлично работает, если выполнить:

./script.sh. 

Проблема заключается в том, что если я ставлю это на хрон, причалу не запускается, однако, войти в мой лог-файл:

Начало Jetty: Jetty нАЧАТЬ Пт июн ...

Я не понимаю, почему это происходит.

ответ

4

настройки PATH в вашем cronjob файле

В моем случае Try,

echo $PATH 
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 

Добавьте путь в ваш кронтаб: crontab -e

PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 

30 5 * * * runmyscript 

Вы можете проверить this question для более подробной информации.

+0

Отлично: D работал. Большое спасибо – elf

0

Как выглядит ваша запись crontab для этого?

Кроме того, проблема с этим сценарием может быть, что вы не указываете bash в качестве переводчика:

jettyPid=`pgrep -f solr` 

if [ "$jettyPid" == "" ] 
then 
    /etc/init.d/jetty start & 
fi 

Попробуйте добавить #!/bin/bash в качестве первой строки в файле так:

#!/bin/bash 
jettyPid=`pgrep -f solr` 

if [ "$jettyPid" == "" ]; then 
    /etc/init.d/jetty start & 
fi 

Если вы не укажете bash, задание cron будет использовать стандартную системную оболочку. Также обратите внимание, что я добавил ; и переместил then до линии if. Этот вид синтаксиса более стандартен по отношению к тому, как обрабатываются сценарии bash.

Прошлое ни одного из них, если для установки Jetty необходимы любые библиотеки, которые являются частью вашего личного $PATH, но не являются частью общенационального $PATH, это не удастся. Ответ chamzzey является правильным, но если какой-либо из путей изменится, это снова сломается. Лучше всего в долгосрочной перспективе заглянуть в код Jetty & установить явные пути к библиотекам или необходимые инструменты, если это возможно.

+0

Джейк, у меня есть bash на моем скрипте. Включите PATH, поскольку chamzzey сказал, что работает отлично. благодаря – elf

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