我正在尝试在 FreeBSD 8.1 虚拟机上运行 logrotate。我使用 pkg_add 安装了 logrotate,创建了 logrotate.config 文件并运行:
mkdir /var/lib/
touch /var/lib/logrotate.status
现在我这样做:
/usr/local/sbin/logrotate -d /usr/local/etc/logrotate.conf
我收到此错误:
ELF interpreter /libexec/ld-elf-so.1 not found
Abort
文件 ld-elf-so.1 存在:
locate ld-elf.so.1
/libexec/ld-elf.so.1
/usr/libexec/ld-elf.so.1
/usr/share/man/man1/ld-elf.so.1.1.gz
答案1
您在 64 位操作系统上安装了 32 位端口,反之亦然。
用于pkg_delete
删除旧版本。尝试通过以下方式安装pkg_add -r logrotate
此外,正如 Stefan 所说,FreeBSD 附带了 newsyslog,它是默认启用的(只需根据/etc/newsyslog.conf
需要编辑添加日志文件),可以满足 99% 的人的所有需求。
编辑:
要为 Apache 的标准日志配置 newsyslog,请将以下一组内容添加到配置文件中。
对于每周日志轮换,保留 5 周的数据,并对旧文件进行 bzip2 压缩:
/var/log/httpd-access.log 644 5 * $W6D0 JC /var/run/httpd.pid
/var/log/httpd-error.log 644 5 * $W6D0 JC /var/run/httpd.pid
“$W6D0” 指示它在周日早上第一时间轮换日志。对于每日,使用$D0
。对于每月,使用$M1D0
。格式读起来有点倒着。例如,“$W6D0” 表示“在第 6 天,第 0 点轮换一周”(“D0”部分在技术上是多余的)。这是在指定绝对时间,您也可以指定间隔。如果您只在该字段中输入“1”,它将每 1 小时轮换一次日志。
当文件达到 5MB 时旋转文件:
/var/log/httpd-access.log 644 5 5000 * JC /var/run/httpd.pid
/var/log/httpd-error.log 644 5 5000 * JC /var/run/httpd.pid
文件大小字段以 KB 为单位。您还可以同时指定时间和大小,这样当满足任一条件时,它就会触发轮换。
如果您有任何其他特定需求,请直接说出来,例如 Apache 是否被监禁或 chrooted,或者您需要另一个应用程序,或者您希望将旧日志文件放在不同的位置...