生成されたファイル名を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

2番目のスクリプトは、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

関連情報