Ich habe einen Cron-Job, der nur rsync in einem bestimmten Verzeichnis ausführt.
Wenn ich den Befehl rsync selbst ausführe sudo rsync -av --delete /directory1 /directory2
, wird er ohne Probleme ausgeführt und funktioniert genau wie beabsichtigt.
Wenn der Cron-Job ausgeführt wird, wird er in /var/log/syslog.1 angezeigt und lautet wie folgt (zusammengefasst):
Mar 12 11:38:01 ip-xx-xx-xx-xxx CRON[4970]: (root) CMD (rsync --delete /my/directory /backup/directory)
Mar 12 11:38:01 ip-xx-xx-xx-xxx CRON[4970]: (CRON) info (No MTA installed, discarding output)
Die Dateien befinden sich jedoch nicht im Sicherungsverzeichnis (daher wird sie nicht abgeschlossen).
No MTA installed
Verhindert diese zweite Aussage über ' ' den Abschluss des Cron-Jobs? Was ist der beste Weg, um diesen Cron-Job abzuschließen und den MTA-Fehler zu beseitigen?
Ich habe diese Antwort gefunden , aber es heißt nicht, ob dies den Abschluss des Jobs verhindert.
crontab
. Zeigen Sie uns Ihr Skript.No MTA installed
macht mich zu "No Mail Transfer Agent installiert", und Ihr Cron-Job versucht, E-Mails zu senden (möglicherweise nur durch Schreiben an STDERR oder STDOUT).Antworten:
Nein, es verhindert nicht, dass der CRON-Auftrag beendet wird.
Normalerweise sollten Sie nicht zulassen, dass Ihr CRON-Job eine Ausgabe generiert, ohne ihm mitzuteilen, wo er sie schreiben soll. Wenn Sie dies tun, wie in diesem Fall, versucht CRON, es irgendwohin zu senden (ebenfalls in der
crontab
Datei angegeben). Wenn dies nicht erfolgreich ist, wird die Ausgabe, wie in der Protokolldatei angegeben, verworfen und fortgesetzt.In Ihrem Fall ist kein "Message Transfer Agent" installiert. Dies ist ein generischer Name für Pakete wie
postfix
undssmtp
, die einenmail
Befehl bereitstellen .Ich empfehle, SYSOUT und SYSERR über den
rsync
Befehl mit>
bzw. umzuleiten2>
. Wenn Sie überhaupt nicht interessiert sind, leiten Sie die Ausgabe an um/dev/null
.quelle
sudo rsync -av --delete /directory1 /directory2 > /log/file 2> /log/errors
. Verwenden Sie vollständige Pfadnamen zu den Protokolldateien. Wenn Sie möchten, dass regelmäßige Ausgaben und Fehler in derselben Datei landen, geben Sie> /log/file 2>&1
denselben Dateinamen nicht zweimal an , sondern angeben.-v
Flag verwenden,rsync
sollten Sie etwas über die Anzahl der gesendeten / empfangenen Bytes, die Übertragungsgeschwindigkeit usw. angeben. Dies sollte sich am Ende der Protokolldatei befinden. Wenn dies der Literalbefehl ist,rsync
wird ein Verzeichnis/directory2/directory1
mit dem Inhalt des Originals erstelltdirectory1
.