Warum läuft mein Crontab nicht?

12

Ich habe diesen Cron

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''

Ich habe diesen Cron unter einem anderen Benutzer, also wechsle ich die Benutzer zur Bereitstellung

sudo su deploy
crontab -e

und ich sehe mein cron, dann beschließe ich das Protokoll unter dem Root-Benutzer

tail -n300 -f /var/log/syslog

und ich sehe meinen cron

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

Aber der Cron läuft entweder nicht oder es gibt ein Berechtigungsproblem ... Wenn ich die Aufgabe in der Konsole ausführe, funktioniert sie großartig, aber nicht im Cron ... keine Ahnung, was mir fehlt

Dies ist Ubuntu 12.04 LTS

Vielleicht kann ich irgendwo eine detailliertere Liste protokollieren, um die Fehler zu sehen

Matt Elhotiby
quelle
2
Gemäß Ihrem Protokoll wurde der Job ausgeführt. Zum Auschecken können Sie etwas protokollieren lassen, z && echo "I did it">>/tmp/test.log. B. a hinzufügen . Dann, nachdem es ausgeführt wurde (gemäß Ihrem Syslog), überprüfen Sie, /tmp/test.logob es a) erstellt wurde und b) die Wörter in enthält.
Izzy
Wo füge ich das && Echo "Ich habe es getan" hinzu >> / tmp / test.log sollte es so aussehen 38 * * * * / bin / bash -l -c 'cd / var / rails / site / release / 20120705144335 && script / Rails Runner -e qa '\' 'Play.load_lists' \ '' '&& echo "Ich habe es geschafft" >> / tmp / test.log
Matt Elhotiby
1
Ich habe festgestellt, dass kein MTA installiert ist, was bedeutet, dass Sie eine E-Mail-Ausgabe haben, diese aber nicht senden können. Sie können möglicherweise eine installieren, und Sie erhalten Ihre Info-Mail.
Rich Homolka
Ich habe das Problem gelöst ... Ich habe den Fehler an eine Protokolldatei weitergeleitet und festgestellt, dass beim Suchen nach Ruby ein Fehler
aufgetreten ist
@Tamer: Wie haben Sie den Fehler an eine Protokolldatei weitergeleitet?
Endolith

Antworten:

18

CRON liefert die Ausgabe der Anwendungen (stdout, stderr) per lokaler Mail. In Ubuntu ist derzeit standardmäßig kein MTA (Mail Transfer Agent) installiert. CRON druckt eine Benachrichtigung in die Systemprotokolldatei, wenn eine Zustellung fehlgeschlagen ist:

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

Sie können einen MTA, z. B. Postfix, nur für den internen (lokalen) Gebrauch installieren, z

aptitude install postfix

Während der Installation werden Sie gefragt, welche Standardkonfiguration verwendet werden soll. Sie sollten die Local onlyKonfiguration auswählen .

Danach finden Sie die Ausgabe der von CRON ausgeführten Anwendungen mit

tail -f /var/mail/<your_username>

Natürlich können Sie die Protokollausgabe auch in eine dedizierte Protokolldatei schreiben oder die Ausgabe mithilfe der integrierten Shell-Funktionalität in eine Datei umleiten / umleiten ...

moooeeeep
quelle
Sehr nützlich, um hier Fortschritte zu erzielen : unix.stackexchange.com/questions/585424/… . Es wundert mich, dass ein Betriebssystem den tatsächlichen Fehler nicht im Protokoll protokollieren würde, anstatt eine E-Mail einzugeben.
NealWalters