Ich erstelle Cron-Jobs in Ubuntu, indem ich die ausführbare Datei in eine von platziere /etc/cron.{daily,hourly,monthly,weekly}
. Es gibt viele Verzeichnisse, die mit cron beginnen:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Ich möchte eine E-Mail von meinen Skripten erhalten, wenn:
- Ein Skript schlägt fehl und gibt einen Exit-Code ungleich Null aus.
- Das Drehbuch hat mir etwas zu sagen
Ich habe SSMTP installiert und arbeite, ich sende meine E-Mails von meinem Google-Konto. Die Tatsache, dass SSMTP nur E-Mails mit einem Konto senden kann, ist für mich kein Problem. Es ist nur ein Heimserver und die Benutzer, die ich habe, können keine Cronjobs hinzufügen.
Ich würde gerne wissen, wie das Mailing von Skripten normalerweise unter Linux / Unix im Allgemeinen und unter Ubuntu im Besonderen funktioniert. Ich würde auch gerne wissen, wie ich in den beiden obigen Situationen E-Mails erhalten kann.
/etc/aliases
Einträge nicht dem Format folgenname: value1, value2, ...
? Ich weiß nicht, vielleicht wurde das Format in den letzten 8 Jahren irgendwann geändert.Um E-Mails von vixie cron zu erhalten, benötigen Sie etwas, das den Befehl sendmail repliziert. Wenn Sie also Postfix oder SSMTP installieren, wird dieser Teil behoben. Wenn Sie Postfix verwenden, kann die Aliase-Datei verwendet werden, um Systembenutzer echten E-Mail-Adressen zuzuordnen.
Wenn Sie MAILTO = "[email protected]" oben auf einer crontab hinzufügen, wird die Ausgabe des Cron-Jobs per E-Mail gesendet. Dies ist unabhängig vom Fehlercode.
Bei Skripten, die Fehler korrekt in STDERR ausgeben, ist es einfach, nur dann eine E-Mail zu erhalten, wenn sie schief gehen.
Dadurch wird nur das STDOUT auf null umgeleitet. Wenn STDERR-Nachrichten vorhanden sind, erhalten Sie eine E-Mail.
Ich habe jedoch festgestellt, dass einige Skripte Fehler fälschlicherweise als STDOUT ausgeben und den Exit-Code auf 1 setzen. Ich habe keine Möglichkeit gefunden, die Ausgabe von diesen zu erfassen, aber ignoriere die Ausgabe, wenn der Exit-Code 0 ist. Die einzige Methode Ich kann mir vorstellen, die Ausgabe in eine Datei umzuleiten. Wenn der Exit-Code nicht 0 ist, wird diese Datei ausgegeben, damit cron sie abruft. Scheint aber ziemlich schrecklich.
quelle
Wenn Sie alle Ausgaben (stdout und stderr) an eine bestimmte Adresse senden möchten, können Sie die
MAILTO
Variable verwenden. Platzieren Sie beispielsweise Folgendes oben im Skript.quelle
Versuchen Sie, "root: [email protected]" zu / etc / aliases hinzuzufügen
Dadurch werden alle Nachrichten für diesen Benutzer an Ihre E-Mail gesendet. Wenn Sie nicht alle Nachrichten möchten, können Sie einen Benutzer speziell dafür erstellen.
Solange das Skript etwas ausgibt, erhalten Sie eine Mail.
quelle
Auf all meinen Produktionsservern, auf denen normalerweise täglich etwa 20 Cronjobs laufen, schwöre ich auf das Paket python-cronwrap. Überprüfen Sie es hier: http://pypi.python.org/pypi/cronwrap . Es ist sehr einfach zu konfigurieren und vor allem zuverlässig.
quelle
Ich glaube nicht, dass SSMTP Ihren Anforderungen entspricht. Sie benötigen etwas, das E-Mails von den Cron-Prozessen "empfangen" und dann an Ihre reale Mailbox senden kann.
Ich verwende Sendmail, aber das liegt daran, dass ich eine alte Sun-Hand bin. Ich weiß, dass es heutzutage von all den coolen Kids, die Postfix verwenden, ausgelacht wird. Ihre Ubuntu-Community kann Sie beim Einrichten Ihres Mail-Systems unterstützen.
quelle
Eine Alternative - Ich archiviere die gesamte Root-Mail in einigen Dateien und lösche dann die ursprüngliche Mail.
Ich habe ein Skript geschrieben (hier ist der Schlüsselteil) -
Das hält alles aufgeräumt und ich kann es im Auge behalten. Ich könnte eine tägliche Mail-Datei per E-Mail an eine externe E-Mail-ID usw. senden.
quelle