FreeBSD 8.1 64 位 logrotate - 找不到 ELF 解释器 /libexec/ld-elf-so.1

Ric*_*nop 3 freebsd logrotate

我正在尝试在 FreeBSD 8.1 虚拟机上运行 logrotate。我用 pkg_add 安装了 logrotate,我已经创建了 logrotate.config 文件并运行:

mkdir /var/lib/

touch /var/lib/logrotate.status
Run Code Online (Sandbox Code Playgroud)

现在当我这样做时:

/usr/local/sbin/logrotate -d /usr/local/etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ELF interpreter /libexec/ld-elf-so.1 not found
Abort
Run Code Online (Sandbox Code Playgroud)

文件 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
Run Code Online (Sandbox Code Playgroud)

Chr*_*s S 6

您在 64 位操作系统上安装了 32 位端口,反之亦然。

使用pkg_delete删除旧版本。尝试通过安装pkg_add -r logrotate

此外,正如 Stefan 指出的那样,FreeBSD 带有 newsyslog,它默认启用(只需/etc/newsyslog.conf根据需要编辑以添加日志文件),并且可以满足99% 的人需要的所有功能。

编辑:
要为 Apache 的标准日志配置 newsyslog,请将以下组之一添加到配置文件中。

对于每周日志轮换,保持 5 周的价值,并 bzip 旧文件:

/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
Run Code Online (Sandbox Code Playgroud)

“$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
Run Code Online (Sandbox Code Playgroud)

文件大小字段以 KB 为单位指定。您还可以指定时间和大小,在这种情况下,当满足任一条件时,它将触发轮换。

如果您有任何其他特定需求,请直接说出来,例如 Apache 是否被监禁或 chroot,或者您需要另一个应用程序,或者您希望旧的日志文件位于不同的位置...