
Ich habe einen Cron-Job, dessen Ausgabe ich protokollieren möchte. Die Cron-Datei ( crontab -e
) lautet:
0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt
Die Crontask heißt:
$ grep CRON /var/log/syslog
Nov 4 07:00:01 ip-... CRON[0000]: (bitnami) CMD (node $HOME/server/task.js >> $HOME/server/task.txt)
Nov 4 07:00:01 ip-... CRON[0000]: (CRON) info (No MTA installed, discarding output)
Die Zeile mit dem Fehler bedeutet, dass ichkeine E-Mail installiert, aber das will ich auch nicht.
Die Ausgabedatei ist leer, wenn die erste Zeile der NodeJS-Aufgabe verwendet console.log()
.
Ich bestätige, dass der Cronjob nicht ausgeführt wird.
Wie kann ich den Fehler beheben, Cron ausführen und das Ergebnis in einer Datei speichern?
Antwort1
Standardmäßig wird die Ausgabe des Cron-Jobs an den Benutzer gesendet, mit dem Sie das Skript ausführen. Der Grund, warum Sie Probleme haben,Kein MTA installiertda auf Ihrem System kein Mailing-Agent installiert ist.
Ihr Skript wird tatsächlich ausgeführt, wie in der ersten Syslog-Zeile zu sehen ist. Das Problem liegt hier in der Ausgabe, die nicht auf die Standardausgabe umgeleitet wird.
Versuchen Sie also, Ihren Cron-Job zu bearbeiten:
0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt 2>&1