When using logrotate from a cronjob, I am getting this erros:

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

Does any one know what does it mean and how can I fix it ?

migrated from stackoverflow.com Nov 10 '11 at 10:38

This question came from our site for professional and enthusiast programmers.

up vote 2 down vote accepted

It means that /var/log/mylog.1 does not exist or the permissions/ownership do not allow that file to be compressed. Check the permissions/ownership with ls -l /var/log/mylog*.

You're going to need to get more information.

Does the file exist, and does the user running cron have permission to read it?:

ls -l /var/log/mylog.1

See if logrotate can give more information. It should have a verbose flag you can turn on with '-v'.

If the file exists, and the permissions are ok, then a cause can be that the file is open when you try to compress it. In order to avoid that, you can add the following line to your /etc/logrotate.conf:

delaycompress

I just hit this error myself. Summary: it was a conflict between logrotate and a postrotate script I'd written, where in certain circumstances my logrotate script would delete the just-moved log file before it was compressed. Although you'd think that logrotate would compress the file and then run the post-rotate script, it actually does it in the other order. Hence this error message.

Since logrotate directly manages the file that the question shows as missing, I can't think of anything else that might cause this problem, unless there's something really strange about the file permissions (e.g. writeable and not readable).

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.