
Antecedentes: el sistema tiene instaladas dos versiones diferentes de Ruby. Necesito usar la última versión para ejecutar este script de monitor que he creado
Esta es mi línea de crontab:
0 * * * * /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb
Cuando ejecuto esto:
/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb
funciona como se esperaba e incluso me envía un correo electrónico según lo diseñado
Cuando reviso syslog no veo mucho. Veo que se está ejecutando pero no se muestran errores.
# 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]
¿Tiene esto que ver con mi configuración de RUTA? Pensé que estaba evitando esto al apuntar directamente al binario Ruby.
Respuesta1
Recuerde que los trabajos cron tienen una configuración de entorno mínima. No tienen la configuración que ves en un shell interactivo. Cron no ejecuta ~/.login
, ~/.bashrc
, etc.
Para ver los errores de un trabajo cron, lo más conveniente es redirigir STDOUT y STDERR a un archivo. por ejemplo, agregar > /tmp/cron.out 2>&1
a la entrada crontab. De lo contrario, su sistema podría empaquetar el resultado en un mensaje de correo electrónico dirigido al propietario del crontab.