Der stündliche Cron-Job wird nicht ausgeführt, läuft aber manuell problemlos

Der stündliche Cron-Job wird nicht ausgeführt, läuft aber manuell problemlos

Hintergrund - auf dem System sind zwei verschiedene Versionen von Ruby installiert. Ich muss die neueste Version verwenden, um das von mir erstellte Monitorskript auszuführen

Dies ist meine Crontab-Zeile:

0 * * * * /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

Wenn ich dies ausführe:

/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

es funktioniert wie erwartet und sendet mir sogar eine E-Mail wie vorgesehen

Wenn ich das Syslog überprüfe, sehe ich nicht viel. Ich sehe, dass es ausgeführt wird, aber es werden keine Fehler angezeigt.

 # 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]

Hat das mit meiner PATH-Konfiguration zu tun? Ich dachte, ich umgehe dies, indem ich direkt auf die Ruby-Binärdatei verweise?

Antwort1

Denken Sie daran, dass Cron-Jobs nur minimale Umgebungseinstellungen haben. Sie haben nicht die Einstellungen, die Sie in einer interaktiven Shell sehen. Cron führt nicht aus ~/.login, ~/.bashrcusw.

Um Fehler eines Cron-Jobs anzuzeigen, ist es meiner Meinung nach am einfachsten, STDOUT und STDERR in eine Datei umzuleiten, z. B. > /tmp/cron.out 2>&1an den Crontab-Eintrag anzuhängen. Andernfalls könnte Ihr System die Ausgabe in eine E-Mail-Nachricht an den Besitzer der Crontab packen.

verwandte Informationen