私は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