почему #! / usr / bin / env ruby ​​не работает в crontab? - PullRequest
8 голосов
/ 09 марта 2011

Я установил ruby ​​с помощью rvm (для всей системы) и правильно работал через обычную консоль, и моя программа rails работает правильно как с rails runner, так и с apache2+passenger.

Теперь в crontab, я позвонил rails runner foo.bar, он сдается, внимательно изучите журнал, который я вижу, что:

/usr/bin/env: ruby: No such file or directory

Кто-нибудь знает, почему / usr / bin / env не работает в crontab?

Ответы [ 3 ]

7 голосов
/ 09 марта 2011

Если вы установили ruby ​​через rvm, вероятно, ruby ​​отсутствует в / usr / bin. В зависимости от того, где установлен rvm:

bash -c "source /usr/local/lib/rvm" && rails runner foo.bar

Возможно, вы добавили источник * / rvm в ваш bashrc, который является правильным сценарием загрузки rvm.

4 голосов
/ 09 марта 2011

ваш cron не наследует вашу среду.попробуйте вывести «$ PATH» в файл, чтобы увидеть, что он установлен.

Вы также можете просто сделать «PATH = / usr / bin / ruby ​​&& foo.rb»

0 голосов
/ 11 марта 2011

У меня была похожая проблема.Похоже, что Cron запускает команды по умолчанию без использования настроек PATH, которые вы ожидаете от пользователя (при входе в систему от имени этого пользователя).Фактически, он даже не использовал какие-либо настройки PATH по умолчанию (будь то в / etc / profile или где-либо еще).

Мне удалось найти проблему с помощью следующих команд (первая из них -как кажется, что cron запускает команды):

su -c 'printenv PATH' userX

С выводом: / usr / local / bin: / usr / bin: /bin: / usr / games

su -l userX -c 'printenv PATH'

С выводом: /opt/ruby-enterprise-1.8.7-2010.02/bin /: / opt / ruby-enterprise-1.8.7-2010.02 / bin /: / usr / local / bin: / usr / bin: / bin: / usr / games

Первая команда непохоже, что переменная PATH заполняется каким-либо образом, кроме стандартной системы по умолчанию.В моем случае я решил эту проблему, просто добавив необходимый (REE) путь к: /etc/login.defs, который по умолчанию выглядит следующим образом:

/ etc / login.defs: 103: ENV_PATH PATH = /USR / местные / бен: / USR / бен: / бен: / USR / игры

...