
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 zum Bereitstellen
sudo su deploy
crontab -e
und ich sehe meinen Cron, dann verfolge 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 einwandfrei, aber nicht im Cron... Irgendeine Idee, was mir entgeht?
Dies ist Ubuntu 12.04 LTS
Vielleicht kann ich irgendwo eine detailliertere Liste protokollieren, um die Fehler anzuzeigen
Antwort1
CRON liefert die Ausgabe der Anwendungen (stdout, stderr) per lokaler Mail. Ubuntu hat anscheinend heutzutage keinen MTA (Mail Transfer Agent) standardmäßig 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. B.
aptitude install postfix
Während der Installation werden Sie gefragt, welche Standardkonfiguration Sie verwenden möchten. Sie sollten diese Local only
Konfiguration auswählen.
Anschließend finden Sie die Ausgabe der von CRON ausgeführten Anwendungen unter
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 ...