Warum benötigt cron MTA für die Protokollierung?


11

Warum benötigt cron MTA für die Protokollierung? Hat dies einen besonderen Vorteil? Warum kann keine Protokolldatei wie bei den meisten anderen Dienstprogrammen erstellt werden?


Ein bisschen wie ein Trottel, aber ich bin mir ziemlich sicher, dass Cron keinen MTA braucht. Sofern Sie keine Cron-Mails an einen anderen Host versenden, ist lediglich ein MDA (Mail Delivery Agent) erforderlich .
Ein Lebenslauf

Antworten:


19

Beachten Sie, dass die traditionelle "Standard" -Methode zum Protokollieren von Daten Syslog ist , wobei die in den Nachrichten enthaltenen Metadaten der "Einrichtungscode" und die Prioritätsstufe sind. Der Einrichtungscode kann verwendet werden, um Protokolldatenströme von verschiedenen Diensten zu trennen, so dass sie in verschiedene Protokolldateien usw. aufgeteilt werden können (obwohl die Einrichtungscodes insofern etwas eingeschränkt sind, als sie feste traditionelle Bedeutungen haben).

Was Syslog nicht hat, ist eine Möglichkeit, Nachrichten für oder von verschiedenen Benutzern zu trennen, und das ist etwas, was cronauf einem herkömmlichen Mehrbenutzersystem benötigt wird. Es ist sinnlos, die Nachrichten von den Cron-Jobs aller Benutzer in einer gemeinsamen Protokolldatei zu sammeln, in der nur der Systemadministrator sie sehen kann. Auf der anderen Seite ermöglicht E-Mail natürlich das Senden von Nachrichten an verschiedene Benutzer, daher ist dies hier eine logische Wahl. Die Alternative wäre, dass cron die Arbeit manuell erledigt und Protokolldateien im Home-Verzeichnis jedes Benutzers erstellt. Bei einem herkömmlichen Mehrbenutzer-Unix-System wird jedoch davon ausgegangen, dass es über einen funktionierenden MTA verfügt. Daher wäre die Implementierung in cron meistens ein vergebliche Übung.

Auf modernen Systemen kann es natürlich alternative Möglichkeiten geben.


13

Ich gehe davon aus, dass Sie mit "Protokollieren" das Speichern der tatsächlichen Ausgabe von Jobs meinen. Die Ausführung von Jobs ist bereits in der Cron-Anmeldung protokolliert /var/cron/log(der Pfad kann zwischen den Systemen unterschiedlich sein). Für dieses Protokoll ist kein MTA erforderlich.

Ein Cron-Job wird als der Benutzer ausgeführt, zu dessen Crontab der Job gehört.

Im Allgemeinen gibt es keine Garantie dafür, dass dieser Benutzer Dateien auf dem System erstellen kann (ein Benutzer ist möglicherweise kein interaktiver Benutzer), insbesondere nicht in der /varHierarchie, in der normalerweise Protokolle erstellt werden. Der sicherste Weg, den Benutzer über Fehler und andere Ausgaben eines Jobs zu informieren, besteht daher darin, diese zu sammeln und per E-Mail an den Benutzer zu senden. Dies würde es dem Benutzer auch ermöglichen, eine E-Mail-Umleitung für das Konto einzurichten, um z. B. Fehler an seinem bevorzugten Speicherort sehen zu können.

Wenn der Benutzer die Ausgabe eines Jobs in einer Datei speichern möchte, kann er dies mit einer einfachen Umleitung in der Crontab tun:

0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1

Dies würde "$HOME/scripts/myscript"jede zweite Stunde zu jeder vollen Stunde ausgeführt und die gesamte Ausgabe auf speichern "$HOME/logs/myscript.log". Durch Ausführen dieses Jobs werden keine E-Mails erstellt, da alle Ausgaben umgeleitet werden. Ohne das 2>&1würden Fehlermeldungen weiterhin per E-Mail gesendet.

Auf diese Weise kann der Benutzer auswählen, wohin die Ausgabe gehen soll.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.