
Предыстория - в системе установлены две разные версии 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.