Frage Kann Cron Job-Ausgabe standardmäßig in ein * Protokoll schreiben (anstelle von Mail)?


Wir alle wissen, dass die richtige Art, die Ausgabe von Cron-Jobs zu handhaben, darin besteht, sie in eine Datei umzuleiten:

0 * * * * /bin/date >> /var/log/date.log 2>&1

Manchmal sind Administratoren jedoch faul, vergesslich oder ignorant und setzen diese Weiterleitungen nicht ein. In diesem Fall wird die Ausgabe des Jobs an $ MAILTO oder den Eigentümer oder Root-Benutzer gesendet. Bei einigen der Boxen, die ich verwalte, ist Mail deaktiviert, so dass diese Ausgabe in ein schwarzes Loch übergeht. Was ich mich wundere ist, gibt es eine Möglichkeit, Cron zu sagen, jeden Job Ausgabe zu nehmen und anstatt es zu verschicken, werfen Sie es in eine Catch-All-Log-Datei irgendwo? Ich benutze Ubuntu (8.04 aber migriert auf 9.04). Darin liegt ein Hinweis auf eine solche Lösung zufälliges Google-Ergebnis, aber ich denke, das OP könnte über die Cron-Ausgabe gegenüber der Ausgabe von Cron-Jobs verwirrt gewesen sein.

Ich bin offen für Lösungen, die ein bisschen Scripting oder Hacking beinhalten, aber im Idealfall wäre das ein Konfigurations-Bit, das ich irgendwo einstellen könnte. Ich sehe keine Hinweise darin man cron. Vielen Dank!


21
2017-08-19 17:11


Ursprung




Antworten:


Zum cronie cron (was zum Beispiel von Gentoo Handbook empfohlen wird), gibt es ein Argument "-s" für cron call, das die Jobausgabe mit syslog an das Systemprotokoll sendet.


1
2018-06-20 13:43





Die kurze Antwort ist nein, cron mailt per Design an den Besitzer der Crontab. Im Standard-Cron gibt es keine Möglichkeit, dies zu ändern.

Das Beste, was ich mir vorstellen kann, besteht darin, die MTAs auf den Computern zu konfigurieren, auf denen dieses Verhalten die Mail in einer Protokolldatei anstelle eines Benutzerpostfachs ablegen soll.


3
2017-08-19 17:57





Ich bin mir nicht sicher, was du genau meinst, wenn du sagst "Mail ist deaktiviert". Aber vielleicht könnten Sie einen Alias ​​einrichten /etc/aliases das ist auf eine Pfeife gerichtet? So etwas wie

root: "|/bin/cat >> /var/log/cron.log"

3
2017-08-19 19:53



root: /var/log/cron.log funktioniert nicht? feep.net/sendmail/tutorial/intro/aliases.html - endolith
Nichts tut für mich etwas. - endolith
Diese funktionieren möglicherweise nur, wenn Sie sendmail als MTA verwenden. Dies wird weniger üblich. (Ja, ich weiß, dass ich auf einen 5 Jahre alten Kommentar antworte!) - Alex L


Ich denke nicht, was du verlangst, ist tatsächlich mit Ubuntu (oder irgendeinem anderen) Cron möglich.

Abgesehen von Geekmonkeys Idee könnten Sie auch einstellen $ MAILTO zu einem lokalen Konto und route die Ausgabe über procmail.


2
2017-08-19 17:59





Ich habe noch nie von einer solchen Einstellung für Cron gehört, also würde ich den Skriptweg nehmen.

Erstellen Sie einen Cron-Job für patrol / var / spool / cron / *, und hängen Sie die Weiterleitung an jeden Job an, der keinen Job hat.


1
2017-08-19 17:51





Eine andere Option wäre, ein Shell-Skript namens cron_wrapper oder so etwas zu erstellen, und es einfach so zu machen:

#! / bin / sh

eval "$ * >> /var/log/cronlog.log"
$ verlassen

Dann brauchen alle deine Crontabs nur so etwas:

* * * * * / usr / local / bin / cron_wrapper echo Hallo

Hinweis Ich habe diesen Code nicht getestet, es ist nur eine Idee.


1
2017-08-19 18:17



Das löst das Problem nicht. Wenn sich Leute nicht daran erinnern können, MAILTO zu setzen oder stdout in eine Datei umzuleiten, werden sie sich nicht daran erinnern, Sachen durch den Wrapper laufen zu lassen. - Kamil Kisiel


Ich weiß nicht, was der "Standardcron" ist. Es gibt viele Cron-Daemons, verschiedene Distributionen verwenden unterschiedliche. Vixie Cron ist am weitesten verbreitet, das ist wahrscheinlich das, was du meintest. Aber in einigen Distributionen wäre es nicht der Standard.

Ich habe die Entwicklung von übernommen Dillons Cron (dcron), das ist die Standardeinstellung für Arch Linux. Andere Distributionen benutzen es auch, aber ich weiß nicht, ob es irgendwo sonst der Standard ist. dcron hat eine Aufrufoption -M um festzulegen, dass Sie ein benutzerdefiniertes Skript anstelle von sendmail verwenden möchten. Das Skript wird ohne Argumente und mit ein paar E-Mail-Headern und dem &>Ausgabe von Cronjobs als Stdin. (Wenn es keine gibt &> Ausgabe, das Skript wird nicht aufgerufen.)


1
2018-02-17 15:55





Warum setzen wir MAILTO = "" nicht in crontab des Benutzers. Dadurch wird die Protokollierung von Mail-Nachrichten in / var / spool / mail / deaktiviert.


1
2017-07-08 10:58