/etc/security/limits.conf 中有以下内容(我单独指定了 root 因为 * 不会包含它。)
用户2-核心无限制 *-核心 0 根 - 核心 0 *-RSS 512000 根 - rss 512000 *-nproc 100 根 - nproc 100 *-最大登录数 1 root - 最大登录次数 1
我以用户 2 的身份运行一个程序 (./programname),但是 /proc/3498/limits 说核心已被禁用:
限制软限制硬限制单位 最大 CPU 时间 无限制 无限制 秒 最大文件大小 无限制 无限制字节数 最大数据大小 无限制 无限制字节数 最大堆栈大小 8388608 无限字节 最大核心文件大小 0 0 字节 最大驻留集 524288000 524288000 字节 最大进程数 100 100 个进程 最大打开文件数 1024 1024 个文件 最大锁定内存 65536 65536 字节 最大地址空间 无限制 无限制字节数 最大文件锁 无限制 无限制锁 最大待处理信号 14001 14001 个信号 最大消息队列大小 819200 819200 字节 最大优先级 0 0 最大实时优先级 0 0 最大实时超时 无限制 无限制 我们
ulimit -Sa 和 ulimit -Ha 输出均表明核心已被禁用:
核心文件大小(块,-c) 0 数据段大小(千字节,-d)无限制 调度优先级 (-e) 0 文件大小(块,-f)无限制 待处理信号(-i) 14001 最大锁定内存(kbytes,-l)64 最大内存大小(kbytes,-m)512000 打开文件(-n)1024 管道大小(512 字节,-p)8 POSIX 消息队列(字节,-q)819200 实时优先级 (-r) 0 堆栈大小(kbytes,-s)无限制 CPU 时间(秒,-t)无限制 最大用户进程 (-u) 100 虚拟内存(kbytes,-v)无限制 文件锁 (-x) 无限制
为何核心被禁用?
答案1
是否有可能某个配置文件正在使用 来设置 user2 的 shell ulimit -c 0
?当我不使用 启动 bashulimit -c
并检查我启动的进程时,我看到了以下内容:
Limit Soft Limit Hard Limit Units
Max core file size 0 unlimited bytes
但是当我ulimit -c 0
运行一个进程时,我看到了以下内容:
Limit Soft Limit Hard Limit Units
Max core file size 0 0 bytes
您是否尝试过ulimit -c unlimited
在用户 2 的 shell rc 文件末尾进行设置?
答案2
尝试以下顺序:
* - core 0
user2 - core unlimited
root - core 0
至少对于某些设置,limits.conf 中的顺序很重要。