Logrotate를 시뮬레이션하는 쉘 스크립트

Logrotate를 시뮬레이션하는 쉘 스크립트

파일을 작성하는 시스템이 있고 /var/tmp/log/my.log로그 파일이 1KB 제한에 도달하면 my.log가 my.log.1이 되고 my.log.1이 my.log가 되도록 로그 파일을 회전시키는 쉘 스크립트를 작성하려고 합니다. 2 등을 my.log.10까지 계속한 다음 다른 파일을 삭제합니다.

스크립트의 일부를 얻었지만 파일 이름을 변경하는 방법을 모르겠습니다.

#!/bin/bash file_size=`du -b /var/tmp/log/my.log` if($file_size -gt 1024) do mv my.log my.log.1 done fi

my.log가 1KB 제한에 도달하면 my.log를 my.log.1로 이동한 다음 my.log.1을 my.log.2로 이동해야 나중에 my.log가 my.log로 이동할 수 있습니다.1 두 번째로 1KB에 도달하는 식으로 계속됩니다. logrotate를 사용하지 않고 이를 수행할 수 있는 방법이 있습니까?

답변1

다음과 같이 회전을 수행할 수 있습니다.

for i in {9..1}; do
    if [[ -f my.log.${i} ]]; then
        mv -f my.log.${i} my.log.$((i+1))
    fi
done
mv -f my.log my.log.1
touch my.log

이렇게 하면 최대 my.log.10까지 10개의 순환 로그가 유지되며, 스크립트가 10회 이상 순환되면 각 순환마다 새로운 로그로 덮어쓰게 됩니다.

보관하려는 로그 수에 따라 for 루프의 범위를 낮추거나 늘려야 합니다.

관련 정보