Ich habe ein Skript, das jede Minute ausgeführt werden muss. Das Problem ist, dass cron bei /var/log/syslog
jeder Ausführung protokolliert . Am Ende sehe ich so etwas immer und immer wieder in /var/log/syslog
:
Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)
Ich benutze Debian.
Meine Fragen sind: Kann ich cron auf irgendeine Weise mitteilen, dass diese Informationen nicht jedes Mal in syslog geschrieben werden?
Antworten:
Sie können die Ausgabe von cron an eine separate Protokollfunktion senden und Ihrer
/etc/syslog.conf
Datei Folgendes hinzufügen :Denken Sie daran, es
/var/log/cron
zu Ihrem hinzuzufügen ,/etc/logrotate.d/syslog
um sicherzustellen, dass es gedreht wird, zquelle
Okay,
Die Lösung meiner Frage war:
Veränderung
zu
innerhalb
/etc/syslog.conf
und starten Sie syslog neuIch habe auch cron geschickt,
/var/log/cron.log
wie von Dave Cheney vorgeschlagen, und eine logrotate darauf geklebt. Mein Fix mit Daves Vorschlag ist optimal für meine Situation, weil:/var/log/syslog
nicht mit Cron-Nachrichten überfrachtet/var/log/cron.log
ab, zu groß zu werden.quelle
rsyslog
in Debian 8.0 einen Jessie, der/etc/rsyslog.conf
bearbeitet werden muss. Übrigens sind die hinzuzufügenden Zeichenfolgen standardmäßig bereits vorhanden, Sie müssen sie nur auskommentieren (Zeile 63). Und/var/log/cron.log
ist schon in der/etc/logrotate.d/syslog
, genau wie die Paketbetreuer diesen Thread gelesen haben.Is there any way I can tell cron not write this information to syslog every time
. Das ist nicht die Antwort.Ändern Sie / etc / default / cron
Standardmäßig lautet die EXTRA_OPTS-Zeile "".
quelle
In Ubuntu 14.04.5 (und wahrscheinlich anderswo) gibt es rsyslogd anstelle von syslogd. TranslucentCloud hat dies mit Debian Jessie angedeutet, aber die gleiche Lösung (aber das Ändern von rsyslog.conf anstelle von syslogd.conf) scheint in Ubuntu nicht zu funktionieren.
Es sieht so aus, als ob die in /etc/rsyslog.d/50-default.conf festgelegten Werte Vorrang vor den in /etc/rsyslog.conf festgelegten Werten haben. Nehmen Sie die Änderungen dort vor und starten Sie dann rsyslog und cron neu. Andernfalls wird das Standardverhalten der Cron-Protokollierung in Syslog sowie der Cron-Protokollierung in Cronlog (jedoch nicht ausschließlich) beibehalten.
Erste Zeilen in meiner /etc/rsyslog.d/50-default.conf:
Und voila!
quelle
Ich habe das nur auf eine andere Art gelöst, aber mein Ziel war etwas anders. Ich wollte die Cron-Protokolleinträge verwerfen, die beim Auslösen von atrun generiert wurden, damit meine Festplatten nicht alle 5 Minuten geweckt werden, sondern in den Ruhezustand versetzt werden.
Sie können festlegen, dass das Ziel eines Protokollereignisses in der Datei syslog.conf ein Shell-Befehl ist, indem Sie ihm die Pipe voranstellen. Deshalb habe ich grep verwendet, um diejenigen zu verwerfen, die ich nicht wollte. So:
Ich habe keine Nachforschungen angestellt, bin jedoch der Meinung, dass es möglich sein sollte, diese Protokolleinträge an ein anderes Ziel zu senden, wenn sie weiterhin benötigt werden.
quelle
Tatsächlich ist die 'beste' (man könnte behaupten) Lösung eine Kombination aus dem, was @ DaveCheney vorgeschlagen und was user7321 letztendlich getan hat , plus einer dritten Aktion, die ich empfehlen würde:
In Ihrem
/etc/syslog.conf
Fall ändert sich durch die Kombination dieser Vorschläge etwa Folgendes:in:
Und vergessen Sie nicht, sowohl den cron- als auch den syslogd-Dienst neu zu laden (oder neu zu starten), z. B .:
Hinweis: Dies funktioniert auch mit rsyslogd.
quelle