Почасовое задание Cron не запускается, но вручную запускается нормально

Почасовое задание Cron не запускается, но вручную запускается нормально

Предыстория - в системе установлены две разные версии ruby. Мне нужно использовать последнюю версию, чтобы запустить этот скрипт монитора, который я создал

Вот моя строка в crontab:

0 * * * * /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

Когда я это запускаю:

/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

работает как и ожидалось и даже отправляет мне электронное письмо как и задумано

Когда я проверяю syslog, я не вижу многого. Я вижу, что он выполняется, но никаких ошибок не отображается..

 # which ruby
 /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby
 # ruby -v
 ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

Это связано с моей конфигурацией PATH? Я думал, что обхожу это, указывая напрямую на двоичный файл Ruby?

решение1

Помните, что задания cron имеют минимальные настройки среды. У них нет настроек, которые вы видите в интерактивной оболочке. Cron не выполняет ~/.login, ~/.bashrc, и т. д.

Чтобы увидеть ошибки из задания cron, я считаю наиболее удобным перенаправить STDOUT и STDERR в файл, например, добавить > /tmp/cron.out 2>&1к записи crontab. В противном случае ваша система может упаковать вывод в сообщение электронной почты владельцу crontab.

Связанный контент