O trabalho Cron por hora não será executado, mas será executado manualmente

O trabalho Cron por hora não será executado, mas será executado manualmente

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.

informação relacionada