Schon bei wenigen Cronjobs, die mehrfach pro Tag ausgeführt werden, wird die Logdatei auth.log
mit Einträgen wie zum Beispiel den folgenden überflutet:
Apr 29 10:21:01 meinserver CRON[19888]: pam_unix(cron:session): session opened for user root by (uid=0) Apr 29 10:21:01 meinserver CRON[19888]: pam_unix(cron:session): session closed for user root Apr 29 10:22:01 meinserver CRON[19891]: pam_unix(cron:session): session opened for user root by (uid=0) Apr 29 10:22:01 meinserver CRON[19891]: pam_unix(cron:session): session closed for user root
Dies macht die Logdatei auth.log
sehr unübersichtlich und es teilweise sogar unmöglich manuell nach bestimmten Vorkommnissen zu Suchen.
Mit Hilfe von rsyslog, welches bei Debian (ab Lenny) und Ubuntu standardmäßig zum Einsatz kommt, ist es ohne weiteres möglich die entsprechenden Logeinträge in eine andere Datei umzuleiten. Hierzu erstellen wir im Verzeichnis /etc/rsyslog.d/
eine neue Datei namens 30-cron.conf
mit folgendem Inhalt:
# Cronjob-Spam umleiten :msg, contains, "pam_unix(cron:session):" -/var/log/cronauth.log & stop
Wichtig ist dabei das & stop
in der letzten Zeile, da sonst die Logeinträge in beiden Dateien ankommen.
Ältere Versionen des rsyslog verwenden hier noch & ~
anstelle von & stop
.
Um die Änderungen zu Übernehmen müssen wir rsyslog noch neu starten:
systemctl restart rsyslog.service
bzw. /etc/init.d/rsyslog restart
Jetzt sollten alle neuen Einträge der Conjobs aus der Logdatei auth.log
verschwunden sein und in der cronauth.log
auftauchen.
Sollte die Datei /var/log/cronauth.log
nicht automatisch angelegt werden, oder leer bleiben, dann kann diese per Hand angelegt und die Dateirechte entsprechend angepasst werden:
touch /var/log/cronauth.log chown syslog:adm /var/log/cronauth.log chmod 0640 /var/log/cronauth.log
Damit die neue Log-Datei auch beim automatischen Logrotate berücksichtigt wird legen wir noch die Datei /etc/logrotate.d/cronauth
mit folgendem Inhalt an:
/var/log/cronauth.log { rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }
20. Jun. 2017 um 18:18
Alles so gemacht wie oben beschrieben, selbst die Texte 1:1 kopiert und eingefügt, doch es funktioniert leider nicht. Vielleicht liegt es an Plesk, welches ja auch noch irgendwie im Hintergrund mitspielt.
20. Jun. 2017 um 18:53
Mit Plesk kenne ich mich leider nicht aus, aber das dürfte da eigentlich keinen großen Einfluss drauf haben.
Wir denn die Datei
/var/log/cronauth.log
erstellt und Meldungen hineingeschrieben?Was für Dateien sind sonst noch im Verzeichnis
/etc/rsyslog.d/
?29. Jul. 2017 um 4:29
Bei mir hat es Anfangs auch nicht funktioniert –> Rechte waren falsch.
Ubuntu 16.04:
chown syslog:adm cronauth.log
🙂
29. Jul. 2017 um 17:39
Danke für den Hinweis!
Ich habe oben eine entsprechende Info ergänzt. 🙂
3. Jan. 2018 um 20:44
Ein fehler in:
:msg, contains, “pam_unix(cron:session):” -/var/log/cronauth.log
es muss heissen:
:msg, contains, “pam_unix(cron:session):” /var/log/cronauth.log
4. Jan. 2018 um 11:23
Das ist kein Fehler, sondern absichtlich so.
Der
-
vor dem Pfad zur Logdatei sagt dem rsyslogd, dassfsync()
nicht nach jedem Logeintrag aufgerufen werden soll. Dies führt zu weniger Schreibvorgängen auf die Festplatte, da der Cache genutzt und nur bei Bedarf wirklich geschrieben wird.Möglich sind beide Varianten.
14. Feb. 2018 um 11:07
Hallo.
Hat alles gut geklappt, vielen Dank.
Wie müsste ich die 30-cron.conf anpassen, um andere pam_unix einträge umzuleiten, z.B. pam_unix(cron:samba)?
14. Feb. 2018 um 12:33
Du musst ganz einfach nur den String, nach dem gesucht wird, anpassen. Bei deinem Beispiel wäre es dann so:
`:msg, contains, “pam_unix(cron:samba):” -/var/log/cronsamba.log`
Und natürlich das `& ~` darunter nicht vergessen.
Die Logdatei in die geschrieben wird kannst du frei wählen. Ebenso den Namen der Datei, in der die Regel steht, also beispielsweise auch `30-samba.conf`.
14. Feb. 2018 um 13:06
Ich war nicht deutlich genug und habe mich auch noch verschrieben, entschuldigung.
Es ging mir darum, den befehlssatz so zu erweitern, dass ich cron:session und samba:session umleite. Mein erster gedanke wäre gewesen:
# Cronjob-Spam umleiten
:msg, contains, “pam_unix(cron:session):” -/var/log/cronauth.log
& ~
:msg, contains, “pam_unix(samba:session):” -/var/log/cronauth.log
& ~
aber das kommt mir nicht richtig vor.
15. Feb. 2018 um 18:40
Das sieht soweit aber richtig aus 🙂
16. Feb. 2018 um 9:41
Meine 30-cron.conf sieht nun so aus:
# Cronjob-Spam umleiten
:msg, contains, “pam_unix(cron:session):” -/var/log/cronauth.log
:msg, contains, “pam_unix(samba:session):” -/var/log/cronauth.log
& ~
Es scheint zu klappen.
Ps.:
Falls das jemand kopieren sollte, es wird zu einem Fehler kommen, da die Gänsefüße nicht korrekt sind. Also am besten komplett eintippen, nicht kopieren.
Vielen Dank für die Hilfe :).
20. Feb. 2018 um 8:24
Korrektur:
# Cronjob-Spam umleiten
:msg, contains, “pam_unix(cron:session):” -/var/log/cronauth.log
& ~
:msg, contains, “pam_unix(samba:session):” -/var/log/cronauth.log
& ~
So muss es dann doch aussehen. Sonst schreibt er in beide logs.
30. Mai. 2018 um 8:59
Moin
erst mal danke, das hat geholfen.
Allerdings nur auf kosten einer Meldung in syslog:
liblogging-stdlog: warning: ~ action is deprecated, consider using the ‘stop’ statement instead [v8.24.0 try http://www.rsyslog.com/e/2307 ]
Wenn in deiner Anleitung ~ durch stop austauscht ist alles gut!
2. Jun. 2018 um 17:42
Danke für den Hinweis! Ich habe es oben im Beitrag geändert.
5. Apr. 2022 um 22:39
Vielen Dank für den Tip. Habe alles wie beschrieben durchgeführt.
# Checked the content of the new logfile:
– COMMAND=/bin/cat /var/log/cronauth.log
Ergebnis:
Apr 5 21:39:01 fj-hp-pavillion CRON[27908]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 5 21:39:01 fj-hp-pavillion CRON[27908]: pam_unix(cron:session): session closed for user root
fr
System: Host: hp-pavillion Kernel: 4.15.0-175-generic x86_64 bits: 64 Desktop: Cinnamon 3.8.9
Distro: Linux Mint 19 Tara
5. Jan. 2023 um 10:15
Danke für die Anleitung. Gibt es eine Möglichkeit, diese Einträge gar nicht zu loggen? Ich habe einen Raspberry, bei dem (absichtlich) minütlich Crons laufen und die Einträge sind mir ehrlich gesagt egal, aber sie müllen mir Logfiles ohne Nutzen zu.
5. Jan. 2023 um 11:04
Um die Einträge gar nicht zu loggen kannst du
:msg, contains, "pam_unix(cron:session):" stop
nutzen.