1 (08.09.2014 14:28:16 отредактировано Sirius Dour)

Возможно ли получить более подробный лог для устранения ошибки при ротировании логов?

Суть.
Добавил новое правило ротирования в /etc/logrotate.d

 Консоль:
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
}

При "ручном запуске" (logrotate -v /etc/logrotate.conf) все отрабатывает корректно: создает архив, файл статистики, приходит письмо на почту.
При "автоматическом" я получаю logrotate: ALERT exited abnormally with [1] в /var/log/messages и больше ничего
Есть подозрение, что для выполнения скрипта в prerotate не хватает каких-то полномочий. Как бы это выяснить?

P.S. судя по времени создания архивов ротирование происходит в ~3:40. Как изменить это время? скрипт запуска logrotate поменял (как я думаю) на генерацию лог файла. Он находится в /etc/cron.daily/

 Консоль:
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

(ранее там было /dev/null)

P.P.S.

 Консоль:
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)

0_о ставил-то вроде CentOS

2

Sirius Dour, CentOS тот же Red Hat Enterprise Linux, только без подписки на техподдержку ab

Linux Mint 19.3 Mate Edition
Windows 7

3 (08.09.2014 20:56:00 отредактировано Sirius Dour)

Да эт я знаю, просто вроде бы раньше CentOS 6.3 писало. Может с памятью у меня чего. Завтра на других машинах проверю (дистрибутив то один).

А по теме: открыл для себя, что помимо crontab-а есть еще и anacrontab, и вот в нём-то и прописано время запуска logrotate. Может кому полезно будет.
Проблему со скриптом так и не решил. Надеюсь мои манипуляции всё-таки выдадут мне завтра какой-нибудь лог файл с ошибками. Гугл говорит, что по умолчанию anacrontab запускает от пользователя root, тогда не понятна причина ошибки, т.к. руками я тоже запускаю от root

4 (09.09.2014 08:44:15 отредактировано Sirius Dour)

чудо-таки произошло - сегодня утром получил чёткий и понятный лог:

 Консоль:
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 '

какие права нужно назначить на файл?
скрипт запускается командой из anacrontab

 Консоль:
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