2016-05-13 4 views
0

На локальном сервере (ubuntu) Я установил программу foodsoft, которая написана в ruby. Он также использует bundler, mysql. foodsoft может быть запущен командойcronjob не выполняет скрипт правильно

RAILS_ENV=production bundle exec rails s -b 192.168.0.15 

Я также программированного с ш скрипт, который начинается foodsoft, если он не работает:

#!/bin/sh 
export DISPLAY=:0 
export LANG=de_DE.utf8 
ip_adr=$(/bin/hostname -I) 
if [ $(pidof ruby) ] 
then 
echo "online" 
else 
echo "offline" 
cd /home/jondal/foodsoft 
RAILS_ENV=production bundle exec rails s -b $ip_adr 
fi 

Если я запустить сценарий в оболочке, все работает отлично. Но мой cronjob (указанный в crontab) не выполняет скрипт полностью. Она производит следующий текстовый файл:

offline 
bundler: command not found: rails 
Install missing gem executables with `bundle install` 

Если я запустить сценарий ш в оболочке с префиксом окр -i я получаю следующее:

автономном /USR/местные/бен/пачке : 23: in load': cannot load such file -- /usr/share/rubygems-integration/1.9.1/gems/bundler-1.3.5/bin/bundle (LoadError) from /usr/local/bin/bundle:23:in '

У вас есть идеи, что я могу сделать?

+0

Вы используете rvm? Возможно, вам нужно будет предпринять дополнительные шаги, чтобы сделать игру rvm приятной с помощью crontab. –

+0

Имеет ли ваш пользователь 'cron' разрешения в каталоге'/home/jondal/foodsoft'? В частности, права на выполнение прав, особенно в 'bin /'? –

ответ

0

Это трудно сказать, но ваш диагностический, запустив env -i может быть biaised, env -i, вероятно, даст вам хороший $PATH, но $PATH в кронтаб способ более минималистичный, цитируя man 5 crontab:

путь установлен на "/ usr/bin:/bin".

Таким образом, вы можете положить:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 

в верхней части вашего crontab как man 5 crontab дает вам в разделе EXAMPLE и повторите попытку. Но это не объясняет, как bundle найден с минималистичным PATH, bundle в/usr/bin?

Вы используете собственный crontab? Если это так, единственное, что меняется, это среда, если PATH недостаточно, я рекомендую вам сравнить свои env и crontab env, поставив env > /tmp/my.env в ваш crontab, вы можете увидеть что-то интересное.

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