Sie können dafür Logrotate verwenden . CentOS 7 verwendet systemd, sodass Sie eine geplante Logrotate-Task wie folgt konfigurieren können :
Erstellen Sie eine logrotate Konfigurationsdatei in
/etc/systemd/system
namensmylogrotate.config
mit folgendem Inhalt:/path/to/your/logfile/*.log { compress copytruncate delaycompress minsize 1G missingok nomail notifempty rotate 30 }
Dies sagt logrotate, dass es folgendes tun soll:
- Alte Versionen von Protokolldateien werden standardmäßig mit gzip komprimiert.
- Kürzen Sie die ursprüngliche Protokolldatei an Ort und Stelle, nachdem Sie eine Kopie erstellt haben, anstatt die alte Protokolldatei zu verschieben und optional eine neue zu erstellen.
- Verschieben Sie die Komprimierung der vorherigen Protokolldatei auf den nächsten Rotationszyklus, sodass zwei unkomprimierte Protokolldateien zur Verfügung stehen.
- Protokolldateien werden gedreht, wenn sie größer als 1 GB sind.
- Wenn die Protokolldatei fehlt, fahren Sie mit der nächsten fort, ohne eine Fehlermeldung auszugeben.
- Versenden Sie alte Protokolldateien nicht an eine Adresse.
- Protokolldateien werden vor dem Entfernen 30 Mal gedreht, sodass Sie 30 alte Protokolldateien haben. Alles was älter ist, wird gelöscht.
Erstellen Sie einen systemd-Dienst. Erstellen Sie eine Datei mit dem folgenden /etc/systemd/system
Aufruf mylogrotate.service
:
[Unit] Description=Rotate My Log [Service] Type=oneshot ExecStart=/usr/sbin/logrotate /etc/systemd/system/mylogrotate.config --state /etc/systemd/system/mylogrotate.state --verbose
Lassen Sie uns diese Aufgabe planen. Erstellen Sie eine dritte Datei mit dem folgenden /etc/systemd/system
Aufruf mylogrotate.timer
:
[Unit] Description=Rotate My Log Timer [Timer] OnCalendar=*:00:00 Persistent=true [Install] WantedBy=timers.target
Dies wird jede Stunde logrotiert.
Alles ist eingerichtet. Aktivieren Sie jetzt die geplante Aufgabe.
systemctl enable mylogrotate.timer systemctl start mylogrotate.timer
Natürlich tun Sie das alles als root.
(Ich bin auf Ubuntu, aber ich hoffe, dass dies ohne Probleme mit CentOS funktioniert.)