Wenn Sie 3 Generationen behalten möchten, können Sie das folgende Skript mit einem Liner verwenden. (Die Idee ist, 3 Generationen zu belassen → alle Dateien außer den 3 Generationen, die Sie behalten möchten, zu löschen.)
(Beim Löschen vom ältesten in der Zeit) ls -1rt | head -n -3 | xargs rm -rf
(Beim Löschen ab dem ältesten Datum der Protokollzeichenfolge, z. B. testlog20200701) ls -1 | head -n -3 | xargs rm -rf
Beschreibung (beim Löschen der alten anhand der Zeichenfolge im Protokoll)
-rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200701 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200702 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200703 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200704 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200705 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200706 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200707 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200708 -rw-r - r--. 1 root root 0 17. Mai 16:40 testlog20200709
testlog20200701 testlog20200702 testlog20200703 testlog20200704 testlog20200705 testlog20200706
Bestätigung
testlog20200707 testlog20200708 testlog20200709
Ich konnte die gewünschten 3 Generationen verlassen.
*) (Beim Löschen vom ältesten in der Zeit) wird durch Ausführen mit ls -1rt realisiert. Option t Nach Zeit sortieren Option r In umgekehrter Reihenfolge sortieren
Es wird davon ausgegangen, dass die Protokollrotation selbst mit dem Linux-Standard logrotate.d ausgeführt wird und nur der gelöschte Teil vom Shell-Skript ausgeführt wird. (Da das Löschskript von logrotate.d vor x Tagen in Form von verarbeitet wurde, bleibt das Protokoll möglicherweise erhalten, wenn das Löschskript aus irgendeinem Grund nicht funktioniert.)
Recommended Posts