Ниже приводится моя конфигурация logrotate.
/mnt/je/logs/apache/jesites/web/*.log" {
missingok
rotate 0
size 5M
copytruncate
notifempty
sharedscripts
postrotate
/home/bitnami/.conf/compress-and-upload.sh /mnt/je/logs/apache/jesites/web/ web
endscript
}
И сценарий compress-and-upload.sh,
#!/bin/sh
# Perform Rotated Log File Compression
tar -czPf $1/log.gz $1/*.1
# Fetch the instance id from the instance
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`"
if [ -z $EC2_INSTANCE_ID ]; then
echo "Error: Couldn't fetch Instance ID .. Exiting .."
exit;
else
/usr/local/bin/s3cmd put $1/log.gz s3://xxxx/logs/$(date +%Y)/$(date +%m)/$(date +%d)/$2/$EC2_INSTANCE_ID-$(date +%H:%M:%S)-$2.gz
fi
# Removing Rotated Compressed Log File
rm -f $1/log.gz
Файлы вращаются, но сценарий оболочки не выполняется. Я не знаю, как отлаживать постскриптум.
Есть ли какой-нибудь файл журнала, который я проверяю, чтобы увидеть, есть ли проблемы с разрешениями.
Если я выполняю сценарий напрямую из файла командной строки, загрузка работает.
Спасибо.
logrotate
обычно выполняется как задание cron, а его ошибки в конечном итоге отправляются по почте root
. Посмотри на /var/mail/root
или, в качестве альтернативы, убедитесь, что /etc/aliases
направляет root
Почта куда-нибудь толковая, и именно ваш экземпляр действительно может отправлять почту.