ulimit 这个命令,干的是控制 shell 运行时的资源限制,比如文件大小、进程数这些。如果你想知道怎么调核心转储文件(core dump)的大小,那关键就在 -c 这个选项上。

具体操作其实不复杂,分几步走就行:
先看看当前是什么情况
想知道现在核心文件能有多大,直接敲:
ulimit -c返回的数字是以“块”为单位的,一个块通常是 512 字节。如果出来个 0,那就说明核心转储压根没开——系统崩溃了也不会留下痕迹。
临时调一下,立刻见效
比如你想让核心文件不受限制,那就:
ulimit -c unlimited或者你想指定一个大小,比如 1024 块(大约 512 KB):
ulimit -c 1024注意,这种设置只在当前 shell 会话中有效,你关掉终端再开,就又回到老样子了。
永久生效,得改配置文件
如果你希望每次登录都自动生效,那就要动系统的配置了。不同发行版略有差异:
大多数 Linux 发行版:编辑
/etc/security/limits.conf文件,在末尾加上:* soft core unlimited
* hard core unlimited这样所有用户的核心文件大小就都没限制了。如果想限制某个用户或某个组,可以把
*换成用户名或组名。有些系统还需要改内核参数:编辑
/etc/sysctl.conf,加入:kernel.core_pattern = /var/crash/core.%e.%p
fs.suid_dumpable = 1然后执行
sysctl -p让配置立即生效。这里core_pattern控制核心文件的存放路径和命名格式——比如%e表示可执行文件名,%p表示进程 PID。你完全可以按自己喜好来改,比如改成/tmp/core.%t用时间戳命名。
搞定了这些,系统崩溃时就会乖乖吐出足够大的 core 文件,方便你事后排查问题。别忘了,调整完最好重启一下或者重新登录,确保设置被正确加载。