/etc/security/limits.conf 用于在 Linux 中设置程序限制

/etc/security/limits.conf 用于在 Linux 中设置程序限制

/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 中的顺序很重要。

相关内容