При использовании logrotate из cronjob я получаю следующие ошибки:
error: unable to open /var/log/mylog.1 for compression
Кто-нибудь знает, что это значит и как я могу это исправить?
Вам нужно будет получить больше информации.
Существует ли файл и имеет ли пользователь, запустивший cron, разрешение на его чтение ?:
ls -l /var/log/mylog.1
Посмотрите, может ли logrotate дать больше информации. Он должен иметь подробный флаг, который вы можете включить с помощью '-v'.
Это означает, что /var/log/mylog.1
не существует или права доступа / владельца не позволяют сжать этот файл. Проверьте права доступа / владельца с помощью ls -l /var/log/mylog*
.
Если файл существует и разрешения в порядке, то причиной может быть то, что файл открыт, когда вы пытаетесь сжать его. Чтобы избежать этого, вы можете добавить следующую строку в ваш /etc/logrotate.conf
:
delaycompress
Я просто ударил эту ошибку сам. Резюме: это был конфликт между logrotate
и постротационным сценарием, который я написал, когда при определенных обстоятельствах мой сценарий logrotate
удалял только что перемещенный файл журнала, прежде чем он был сжат. Хотя вы можете подумать, что logrotate
файл, а затем запустит скрипт после поворота, он на самом деле сделает это в другом порядке. Отсюда и это сообщение об ошибке.
Поскольку logrotate
напрямую управляет файлом, который отображается в вопросе как отсутствующий, я не могу думать ни о чем другом, что могло бы вызвать эту проблему, если только в разрешениях файла нет чего-то действительно странного (например, для записи и не для чтения).