2

При использовании logrotate из cronjob я получаю следующие ошибки:

error: unable to open /var/log/mylog.1  for compression

Кто-нибудь знает, что это значит и как я могу это исправить?

4 ответа4

3

Вам нужно будет получить больше информации.

Существует ли файл и имеет ли пользователь, запустивший cron, разрешение на его чтение ?:

ls -l /var/log/mylog.1

Посмотрите, может ли logrotate дать больше информации. Он должен иметь подробный флаг, который вы можете включить с помощью '-v'.

2

Это означает, что /var/log/mylog.1 не существует или права доступа / владельца не позволяют сжать этот файл. Проверьте права доступа / владельца с помощью ls -l /var/log/mylog* .

1

Если файл существует и разрешения в порядке, то причиной может быть то, что файл открыт, когда вы пытаетесь сжать его. Чтобы избежать этого, вы можете добавить следующую строку в ваш /etc/logrotate.conf:

delaycompress
0

Я просто ударил эту ошибку сам. Резюме: это был конфликт между logrotate и постротационным сценарием, который я написал, когда при определенных обстоятельствах мой сценарий logrotate удалял только что перемещенный файл журнала, прежде чем он был сжат. Хотя вы можете подумать, что logrotate файл, а затем запустит скрипт после поворота, он на самом деле сделает это в другом порядке. Отсюда и это сообщение об ошибке.

Поскольку logrotate напрямую управляет файлом, который отображается в вопросе как отсутствующий, я не могу думать ни о чем другом, что могло бы вызвать эту проблему, если только в разрешениях файла нет чего-то действительно странного (например, для записи и не для чтения).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .