当从 cronjob 使用 logrotate 时,我收到此错误:
error: unable to open /var/log/mylog.1 for compression
有人知道这是什么意思以及我该如何解决它?
答案1
这意味着/var/log/mylog.1
不存在或权限/所有权不允许压缩该文件。使用 检查权限/所有权ls -l /var/log/mylog*
。
答案2
您将需要获取更多信息。
该文件是否存在,并且运行 cron 的用户是否有权读取该文件?:
ls -l /var/log/mylog.1
看看 logrotate 是否可以提供更多信息。它应该有一个详细标志,您可以使用“-v”打开它。
答案3
如果文件存在,并且权限正常,则原因可能是您尝试压缩文件时文件处于打开状态。为了避免这种情况,您可以将以下行添加到/etc/logrotate.conf
:
delaycompress
答案4
logrotate
我自己也遇到了这个错误。摘要:这是我编写的 postrotate 脚本与之间的冲突,在某些情况下,我的logrotate
脚本会在压缩之前删除刚刚移动的日志文件。虽然你会认为这logrotate
会压缩文件,但然后运行后旋转脚本,它实际上按照其他顺序执行。因此出现此错误消息。
由于logrotate
直接管理问题显示为丢失的文件,我想不出任何其他可能导致此问题的原因,除非文件权限确实很奇怪(例如可写且不可读)。