Согласно руководству по logrotate (https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html), logrotate должен вызвать скрипт и передать имя повернутого файла в качестве первого параметра скрипта с такой конфигурацией:
/var/log/piwik/*.log {
missingok
postrotate
/root/createStats.sh > /dev/null
endscript
}
Скрипт createStats.sh существует только для тестовых целей:
#!/bin/bash
echo "L: $1"
FNAME=/my.log
D=$(date)
echo "M $D ; $0 ; $1 ; $2" >> $FNAME
К сожалению, мой файл /my.log не содержит значений для $ 1 (или $ 2):
M Tue 26 Dec 05:16:38 CET 2017 ; /root/createStats.sh ; ;
M Tue 26 Dec 05:16:38 CET 2017 ; /root/createStats.sh ; ;
Возможно, я что-то упускаю. Есть у кого-нибудь идеи?
Моя версия logrotate - 3.8.7.
Думайте о postrotate как о сценарии. Вы должны передать в него 1 доллар. Пытаться
/var/log/piwik/*.log {
missingok
postrotate
/root/createStats.sh $1 > /dev/null
endscript
}