Возможно ли получить более подробный лог для устранения ошибки при ротировании логов?
Суть.
Добавил новое правило ротирования в /etc/logrotate.d
[console]cat /etc/logrotate.d/firewall
/srv/safespace/log/firewall/firewall.log {
daily
missingok
rotate 31
compress
notifempty
copytruncate
prerotate
cat /srv/safespace/log/firewall/firewall.log | awk '{print $11}' | sort | uniq -c > /srv/safespace/log/firewall/stat-$(date +%Y%m%d)
mail -s "IP to block $(date +%d.%m.%Y)" test@my_serv.ru < /srv/safespace/log/firewall/stat-$(date +%Y%m%d)
endscript
}[/console]
При "ручном запуске" (logrotate -v /etc/logrotate.conf) все отрабатывает корректно: создает архив, файл статистики, приходит письмо на почту.
При "автоматическом" я получаю logrotate: ALERT exited abnormally with [1] в /var/log/messages и больше ничего
Есть подозрение, что для выполнения скрипта в prerotate не хватает каких-то полномочий. Как бы это выяснить?
P.S. судя по времени создания архивов ротирование происходит в ~3:40. Как изменить это время? скрипт запуска logrotate поменял (как я думаю) на генерацию лог файла. Он находится в /etc/cron.daily/
[console]cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -v /etc/logrotate.conf >/var/log/logrotate 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0[/console]
(ранее там было /dev/null)
P.P.S.
[console]cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)
[/console]
0_о ставил-то вроде CentOS
CentOS, logrotate: ALERT exited abnormally with [1]
Sirius Dour, CentOS тот же Red Hat Enterprise Linux, только без подписки на техподдержку :)
Да эт я знаю, просто вроде бы раньше CentOS 6.3 писало. Может с памятью у меня чего. Завтра на других машинах проверю (дистрибутив то один).
А по теме: открыл для себя, что помимо crontab-а есть еще и anacrontab, и вот в нём-то и прописано время запуска logrotate. Может кому полезно будет.
Проблему со скриптом так и не решил. Надеюсь мои манипуляции всё-таки выдадут мне завтра какой-нибудь лог файл с ошибками. Гугл говорит, что по умолчанию anacrontab запускает от пользователя root, тогда не понятна причина ошибки, т.к. руками я тоже запускаю от root
чудо-таки произошло - сегодня утром получил чёткий и понятный лог:
[console]cat /var/log/logrotate
rotating pattern: /srv/safespace/log/firewall/firewall.log after 1 days (31 rotations)
empty log files are not rotated, old logs are removed
considering log /srv/safespace/log/firewall/firewall.log
log needs rotating
rotating log /srv/safespace/log/firewall/firewall.log, log->rotateCount is 31
dateext suffix '-20140909'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
error: error accessing /srv/safespace/log/firewall: Permission denied
glob finding old rotated logs failed
running prerotate script
logrotate_script: line 1: /srv/safespace/log/firewall/stat-20140909: Permission denied
logrotate_script: line 2: /srv/safespace/log/firewall/stat-20140909: No such file or directory
error: error running non-shared prerotate script for /srv/safespace/log/firewall/firewall.log of '/srv/safespace/log/firewall/firewall.log '
[/console]
какие права нужно назначить на файл?
скрипт запускается командой из anacrontab
[console]cat anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=30
# the jobs will be started during the following hours only
START_HOURS_RANGE=1-3
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
[/console]