Настройка logrotate без рут-доступа (на ротацию журнала пользователя)

18

Как лучше всего настроить logrotate для каждого пользователя, чтобы он вращал файлы в домашнем каталоге пользователя под контролем каждого пользователя crontab -e?

Брайс
источник

Ответы:

27

Попробуйте эту процедуру:

  1. создать /home/user/logrotateпапку

    mkdir /home/user/logrotate
    
  2. создайте /home/user/logrotate/my.confфайл конфигурации с директивой logrotate, как вам нужно

  3. создать /home/user/logrotate/cronjobдля запуска logrotate каждый день в 2:30 (это пример)

    30 2 * * * /usr/sbin/logrotate -s /home/user/logrotate/status /home/user/logrotate/my.conf > /dev/null 2>&1
    
  4. проверьте синтаксис вашего файла конфигурации:

    logrotate -d /home/user/logrotate/my.conf
    
  5. настроить crontabдля запуска logrotate ( Предупреждение : это удаляет существующие записи в вашем crontab. Используйте, crontab -eчтобы вручную добавить строку из шага 3 в существующий crontab):

    crontab /home/user/logrotate/cronjob 
    

После этой последней команды logrotateфайл будет повернут, как описано в, /home/user/logrotate/my.confи сохранен статус файла журнала в /home/user/logrotate/status.

Использование:

crontab -r   # remove crontab activities for user
crontab -l   # to list crontab activity for user
crontab -e   # edit user crontab entries

Вот страница руководства logrotate и crontab .

Лети
источник
3
Очень поучительно. Может быть, стоит упомянуть, что crontab <file> удаляет все ранее настроенные cronjobs. Это только что случилось со мной - к счастью, у меня была резервная копия :)
pederpansen
1
@pederpansen спасибо, что улучшили мой ответ :)
Lety
2
Благодаря -sпараметру буду избегать error: error creating unique temp file: Permission denied.
Марко Марсала