Я пытаюсь выполнить некоторую обработку журнала exim, но мой скрипт не получает в качестве параметра повернутое имя файла журнала - скорее, он получает исходное имя файла журнала (которое больше не существует)
/var/log/exim/*log" {
daily
rotate 3650
delaycompress
missingok
notifempty
nosharedscripts
postrotate
echo $0 $1 $2 >> /tmp/out
/path/to/script $1
endscript
}
Результаты в / tmp / out:
logrotate_script /var/log/exim/main.log
я бегу
logrotate --force -v /etc/logrotate.conf
Кажется, что вывод указывает, что он переименовал, а затем запустил:
renaming /var/log/exim/main.log to /var/log/exim/main.log-20160105
running postrotate script
Это на экземпляре amazon linux. Я пробовал использовать как sharedscripts, так и nosharedscripts, без разницы.
Как мне получить старое переименованное имя файла?
Если файл журнала результатов имеет формат (logfilepath). (Log) - (20160105), возможно, вы можете попробовать следующее:
postrotate
DATE=`date '+%Y%m%d'`
/path/to/script $1-$DATE
endscript
Если вам нужен формат (logfilepath) - (20160105). (Log), вы можете использовать:
postrotate
DATE=`date '+%Y%m%d'`
LOGF=${1%*.}
/path/to/script $LOGF-$DATE.log
endscript
с $ 1 return logfilepath