logrotate Datei für NTP erstellen

Logdateien sind ein wichtiger Teil eines jeden Linux-Systems. Viele Programme, erst recht alle Dienste und das System selbst, schreiben Logdateien. In diesen Logs kann man Fehler des Systems finden, Probleme von Diensten erkennen oder einfach nur verfolgen, was das System alles im Hintergrund macht. Üblicherweise findet man die Logs im Verzeichnis /var/log/ eines Linux-Systems. Manche Dienste, die z.B. mehrere Logdateien schreiben, benutzen noch Unterverzeichnisse wie z.B. NTP mit /var/log/ntpd-stats/. Logdateien sind immer Textdateien. Man kann sie mit jedem beliebigen Texteditor oder Dateibetrachter ansehen.
Welche Dateien sollen rotiert werden?

  • ntpd.log
  • loopstats
  • peerstats
  • sysstats
  • timingstats
In welchen Verzeichnissen liegen diese Dateien?
  • /var/log/
  • /var/log/ntpd-stats/

Auf welche Art und Weise soll rotiert werden?

copytruncate - Schneidet das orginale Logfile auf die Länge 0 ab, nachdem eine Kopie gezogen wurde, anstatt das alte Logfile zu verschieben und ein neues zu erstellen. Das kann verwendet werden, wenn ein Programm nicht in der Lage sein sollte, sein Logfile zu schließen und so ständig weiter in diese Datei schreibt. Es kann zu einer kurzen Verzögerung kommen, so daß einige Meldungen verloren gehen können. Wenn diese Option benutzt wird, dann hat die create Option keine Bedeutung, weil die alte Logdatei ja bestehen bleibt.

sharedscripts - Normalerweise werden die prerotate und postrotate Scripts für jede einzelne Datei angewandt. Das heißt, ein Script wird womöglich mehrmals ausgeführt, wenn in einer Logfile-Definition mehrere Dateien oder Namensmuster angegeben wurden. Wenn sharedscripts angegeben wurde, dann werden die Scripts nur einmal ausgeführt, egal wieviele Dateien auf das Namensmuster passen. Ein Nebeneffekt dieser Anweisung ist, dass das Script auch ausgeführt wird, wenn keine Datei auf das Muster passt, also keine Dateien rotiert werden. Wenn diese Option nicht angegeben wird, werden die Scripts nur ausgeführt, wenn die Logdatei tatsächlich rotiert werden.

postrotate/endscript - Die Zeilen zwischen postrotate und endscript (beide müssen in einer eigenen Zeile stehen) werden ausgeführt, nachdem die Logdatei rotiert wurde. Diese Anweisung darf nur innerhalb einer Logdatei-Definition stehen (nicht global).

  • Beispiel: ntpd.logrotate

    # This is ntpd logrotate config file
    # For more info please refer logrotate man page
    /var/log/ntpd.log /var/log/ntpd-stats/loopstats /var/log/ntpd-stats/peerstats /var/log/ntpd-stats/sysstats /var/log/ntpd-stats/timingstats {
    copytruncate
    sharedscripts
    postrotate
    /usr/bin/killall -HUP `cat /var/run/ntpd/ntpd.pid 2> /dev/null` 2> /dev/null || true
    endscript
    }