
Antecedentes - o sistema possui duas versões diferentes do Ruby instaladas. Preciso usar a versão mais recente para executar este script de monitor que criei
Esta é minha linha crontab:
0 * * * * /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb
Quando executo isso:
/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb
funciona como esperado e até me envia um e-mail conforme projetado
Quando verifico o syslog, não vejo muito. Vejo que está sendo executado, mas nenhum erro é mostrado.
# 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]
Isso tem a ver com minha configuração PATH? Achei que estava contornando isso apontando diretamente para o binário Ruby.
Responder1
Lembre-se de que os cron jobs têm configurações mínimas de ambiente. Eles não possuem as configurações que você vê em um shell interativo. Cron não executa ~/.login
, ~/.bashrc
, etc.
Para ver erros de um cron job, acho mais conveniente redirecionar STDOUT e STDERR para um arquivo. por exemplo, anexe > /tmp/cron.out 2>&1
à entrada do crontab. Caso contrário, seu sistema poderá empacotar a saída em uma mensagem de e-mail para o proprietário do crontab.