我在 CentOS 5.7 上运行了 nagios 3.2.3,但有些东西导致它出现段错误。最近许多服务器被添加到配置中,因此很难判断是什么附加指令触发了问题。
然而 nagios 3.2.3 软件包来自 rpmforge 并且许多现有的 perl 库很可能是 CentOS 基础/更新库,所以我预计某些冲突库会导致这种情况。
在 strace 下运行 nagios 服务器二进制文件会导致以下段错误;
open("/usr/bin/p1.pl", O_RDONLY) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffefee6da0) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
fstat(4, {st_mode=S_IFREG|0664, st_size=31878, ...}) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
readlink("/proc/self/exe", "/usr/bin/nagios"..., 4095) = 15
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
所以我尝试过的一些事情;
- 内核是最新的,并且服务器已重新启动。好吃-y
- 更新已运行,服务器重新启动 /usr/bin/nagios -v
- /etc/nagios/nagios.cfg 通过飞行前检查
不能在不重新编译的情况下禁用嵌入式 perl,这是一个巨大的烦恼。