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
.