생성된 파일 이름을 postrotate 섹션에서 호출되는 쉘 스크립트에 전달하는 방법

생성된 파일 이름을 postrotate 섹션에서 호출되는 쉘 스크립트에 전달하는 방법

나는 bash에 대한 지식이 매우 부족하여 squid에 대해 다음과 같은 logrotate 구성을 가지고 있으며 이름에 이전 날짜가 포함된 생성된 로그 파일 이름(access-Ymd.log)을 다른 쉘 스크립트 명령에 전달하려고 합니다. Symfony를 호출합니다. 결과 파일의 이름을 인수로 사용합니다. 현재 Symfony 명령 내에서 예상되는 파일 이름을 생성하고 있는데 처음부터 생성하고 싶습니다(회전 후 부분).

    /var/log/squid/access.log {
    su root root
    daily
    missingok
    rotate 999
    extension .log
    dateext
    dateyesterday
    dateformat -%Y-%m-%d
    nocompress
    nomail
    notifempty
    create 0644 proxy proxy
    sharedscripts
    ifempty
    #prerotate
    #endscript
    postrotate
        test ! -e /run/squid.pid || test ! -x /usr/sbin/squid || /usr/sbin/squid -k rotate
        # Este script se encarga de copiar el archivo rotado al directorio de respaldo local y al FTP configurados;
        **resultingFilename=????????**
        /var/www/html/squidmgr/run/rotarsquid.sh $resultingFilename > /dev/null 2>&1
    endscript
}

/var/www/html/squidmgr/run/rotarsquid.sh:
rotatedLogFilename=$1
sudo -u www-data php -d memory_limit=256M /var/www/html/squidmgr/bin/console squidmgr:backups:squid-access-log-postrotate $rotatedLogFilename --notify-to-users-on-success --dump-to-db > /dev/null 2>&1
exit 0

두 번째 스크립트는 Symfony 명령을 $rotatedLogFilename인수로 사용하여 호출됩니다.

답변1

prerotate회전하기 전에 스크립트를 사용하여 로그 파일을 읽을 수 있습니다 .

prerotate
    /some/path/myscript "$1" >/dev/null 2>&1
endscript

다양한 스크립트 섹션은 로그 파일 이름을 첫 번째 인수로 사용 하며 "$1". prerotate조치가 필요함).

답변2

후회전 부분에서 해결책을 찾았습니다.

postorate
    YESTERDAYSTR=$(date -d "1 day ago" '+%Y-%m-%d');
    RESULTINGFILENAME="access-$YESTERDAYSTR.log";
    /var/www/html/squidmgr/run/rotarsquid.sh $RESULTINGFILENAME > /dev/null 2>&1
endscript

관련 정보