[LINUX] Protokollrotation nach Anzahl der Dateien anstelle des Datums

zunaechst

Oft lösche ich die Protokolldatei vor 7 Tagen und verwende das Datum als Bedingung wie Rotation. Dieses Mal habe ich beim Drehen ein Bash-Sample erstellt, indem ich die Nummer angegeben habe.

Zu drehende Dateien

Die Datei, die dieses Mal gedreht werden soll, ist Es wird im Format server.log gedreht. JJJJ-MM-TT.

/var/log/server.log #Neueste Datei /var/log/server.log.2020-03-25 /var/log/server.log.2020-03-24 /var/log/server.log.2020-03-23 /var/log/server.log.2020-03-22

Implementierung

    #!/bin/bash

    ROTATE_GEN=7             #Rotationserzeugung (diesmal 7 übrig)
    LOG=/var/log/server.log  #Zieldatei

    #Dateien mit Datum speichern
    mv ${LOG} ${LOG}.`date +"%Y-%m-%d"` 

    #Aktuelle Anzahl der Dateien(FILE_CNT) -Anzahl der Generationen(ROTATE_GEN)
    # =Anzahl der zu löschenden Dateien(RM_CNT)
    FILE_CNT=`ls -1t ${LOG}.* | wc -l`
    RM_CNT=`expr ${FILE_CNT} - ${ROTATE_GEN}`

    # RM_Löschen Sie so viele Dateien, wie CNTs vorhanden sind
    if [[ $RM_CNT -gt 0 ]] ; then
     ls -1t ${LOG}.* | tail -n ${RM_CNT} | xargs rm -f
    fi

Ergänzung

Recommended Posts

Protokollrotation nach Anzahl der Dateien anstelle des Datums
Minimieren Sie die Anzahl der Polierungen, indem Sie die Kombination optimieren