[LINUX] Rotation du journal par nombre de fichiers au lieu de date

en premier

Souvent, j'efface le fichier journal il y a 7 jours et j'utilise la date comme condition comme la rotation, Cette fois, j'ai fait un échantillon bash lors de la rotation en spécifiant le nombre.

Fichiers à faire pivoter

Le fichier à faire pivoter cette fois est Il sera tourné au format server.log.YYYY-MM-DD.

/var/log/server.log #Dernier fichier /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

la mise en oeuvre

    #!/bin/bash

    ROTATE_GEN=7             #Génération de rotation (7 à gauche cette fois)
    LOG=/var/log/server.log  #Fichier cible

    #Enregistrer les fichiers avec la date
    mv ${LOG} ${LOG}.`date +"%Y-%m-%d"` 

    #Nombre actuel de fichiers(FILE_CNT) -Nombre de générations(ROTATE_GEN)
    # =Nombre de fichiers à supprimer(RM_CNT)
    FILE_CNT=`ls -1t ${LOG}.* | wc -l`
    RM_CNT=`expr ${FILE_CNT} - ${ROTATE_GEN}`

    # RM_Supprimer autant de fichiers qu'il y a de CNT
    if [[ $RM_CNT -gt 0 ]] ; then
     ls -1t ${LOG}.* | tail -n ${RM_CNT} | xargs rm -f
    fi

Supplément

Recommended Posts

Rotation du journal par nombre de fichiers au lieu de date
Minimisez le nombre de polissages en optimisant la combinaison