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

0

Plano de fundo - o sistema tem duas versões diferentes do ruby instalado. Eu preciso usar a versão mais recente para executar este script de monitor que eu criei

Esta é a 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 email conforme projetado

Quando eu verifico o syslog eu não vejo muito. Eu vejo que está sendo executado, mas não há erros mostrados ..

 # 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 a configuração do meu PATH? Eu pensei que estava ignorando isso apontando diretamente para o binário rubi?

    
por Choppra 11.08.2017 / 17:30

1 resposta

0

Lembre-se de que os trabalhos agendados têm configurações de ambiente mínimas. Eles não têm as configurações que você vê em um shell interativo. Cron não executa ~/.login , ~/.bashrc , etc.

Para ver os erros de um cron job, acho mais conveniente redirecionar STDOUT e STDERR para um arquivo. por exemplo, acrescentar > /tmp/cron.out 2>&1 à entrada do crontab. Caso contrário, seu sistema pode empacotar a saída em uma mensagem de e-mail para o proprietário do crontab.

    
por 11.08.2017 / 18:12