当我通过 SSH 进入 CentOS 服务器实例时,我注意到创建了如下文件:
11714560 9月 14日 02:18 core.1084
有人知道这些是什么吗?以及为什么会发生这种情况?
答案1
我在 CPanel 设置中遇到了同样的问题。在我的例子中,运行
strings core.nnnn | less
表明问题可以追溯到错误的 Perl 命令。这是有问题的部分/etc/bashrc
(通过在启动脚本中 grep perl 找到):
if [ "$LOCALLIBUSER" != "root" ]; then
eval $(perl -Mlocal::lib)
fi
如果我尝试eval $(perl -Mlocal::lib)
在控制台上运行,它会转储核心,所以这肯定是问题所在。
这种现象很常见,谷歌搜索后就出现了此主题,除了检查 perl 模块之外没有提供太多建议。
答案2
核心文件是核心转储的标志。这意味着程序已崩溃,并且您拥有转储时程序内存的核心转储。
如果将“ulimit -c 0”放入 sysconfig,则可以防止这种情况发生 - 您将不会获得核心文件。但您还应该首先检查崩溃的原因以及原因 - 您可能在那里遇到了严重的问题。
答案3
命令:
gdb -c core.1084
将解释哪个进程崩溃了以及原因。
也许您的 .bashrc 中设置了一些自动运行的 GUI 程序,当它无法访问正在运行的 X 服务器时就会崩溃。
答案4
检查file core.1084
— 如果是sshd
崩溃的,则可能是根工具包,它替换了您原来的sshd
二进制文件或所使用的一些库sshd
。
这是一个粗略的脚本,用于验证二进制文件及其使用的库的校验和是否与rpm
数据库一致:
#!/bin/bash
{
echo "$1"
cd /lib
ldd "$1" | cut -d ' ' -f 1 | xargs rpm -qf
cd /usr/lib
ldd "$1" | cut -d ' ' -f 1 | xargs rpm -qf
} 2>/dev/null | sort -u | xargs rpm -V