Подстановочный знак Logrotate терпит неудачу на отсутствующих файлах с "missingok" И "olddir"
Платформа:
RHEL 7
logrotate-3.8.6-7.el7_2.x86_64
Фон:
На сервере RedHat Linux у меня работает большой набор серверов приложений, и мне нужна единая процедура logrotate для очистки файлов журналов. Использование подстановочных знаков имеет первостепенное значение, поэтому мне не нужно вести постоянно растущий и сокращающийся список.
Выпуск:
Комбинируя групповые символы, опция "missingok" И "olddir", похоже, не работают. Когда я определяю шаблон для файлов журнала отладки - который может существовать или не существовать - и использую только "missingok", все в порядке. Если я добавлю "olddir" опцию, она потерпит неудачу с:
# logrotate -d /etc/logrotate.d/foobar
reading config file /etc/logrotate.d/foobar
olddir is now old_logs
error: /etc/logrotate.d/foobar:28 error verifying log file path /srv/www/servers/*/logs: No such file or directory
removing last 1 log configs
Конфигурационный файл:
/srv/www/servers/*/logs/*_foobar.txt
{
daily
olddir old_logs
missingok
}
Я вижу, что в http://rhn.redhat.com/errata/RHBA-2008-0703.html уже давно исправлено исправление проблемы с подстановочными знаками и пропущенными, но кто-нибудь видел или исправлял проблему с помощью olddir?
Я собираюсь пропустить olddir и использовать postrotate + find/mv, но я бы не хотел этого делать.
2 ответа
Исправлено вверх по течению: https://github.com/logrotate/logrotate/commit/73493ec38c5e806fa66d8c3f13259775da6282d9
Цитата:
Fix 'olddir' usage with wildcard in the middle of path in the pattern…
… definition when the pattern did not match any log file.
Я встретил ту же проблему.
Посмотрите каталог с помощью /var/logs/*/*/*.log и используйте вместе "missingok" и "olddir".
Если в этом каталоге нет журналов, он будет жаловаться:
ошибка при проверке пути к файлу журнала / var/logs/*/*: такого файла или каталога нет
@sastorsl, как ты тогда?
Шахта логротат 3.7.8.
Кажется, это было исправлено в 3.11.0.