Назад | Перейти на главную страницу

вращать журналы с помощью logrotate и перемещать старые файлы

Logrotate не перемещает файл в папку oldlogs и аварийно завершает работу с кодом 1. Я попытался запустить его вручную с параметром -d, но ошибок не было. Это моя конфигурация:

/var/log/myfolder/*.log
{
        rotate 4
        daily
        missingok
        size=100M
        notifempty
        copytruncate
        compress
        delaycompress
        create 640 root root
        dateformat -%Y-%m-%d-%s
        sharedscripts
        postrotate
                mv /var/log/myfolder/*.gz /var/log/myfolder/oldlogs/
                /etc/init.d/rsyslog restart
        endscript
}

Любая идея?

У меня есть много файлов, которые постоянно обновляются, и я хотел бы хранить сжатые файлы в другом каталоге (старые журналы) для хранения. Команда поворота не нужна для моей цели, но моя проблема в том, что я не могу переместить файлы в каталог oldlogs.

Вам не нужно самостоятельно перемещать старые файлы журналов, log rotate сделает это за вас.

Вы не хотите перезапускать rsyslog в своем postrotate script, если вы не меняете журналы, записываемые из rsyslog. В этом случае вам не нужно выполнять полный перезапуск rsyslog, вместо этого используйте kill -HUP $(cat /var/run/rsyslogd.pid) (при условии, что это pid-адрес rsyslog).

Цель - заставить службу прекратить попытки записи в старый обработчик файлов и начать запись в новый файл журнала.

Если вы пытаетесь выполнить лог-ротацию журнала, написанного другой службой, -HUP может не поддерживаться.

Какой драйвер использовать copy truncate? Это немного экзотично.

Более подробная информация находится на странице руководства для Logrotate https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html

Вам нужно будет использовать полные пути к mv вместе с переключателем -f для силовых ходов.

Думаю, тебе нужно -vf если вы хотите, чтобы logrotate запускался now. -d отключает любые действия, подробности уточняйте man logrotate.