bash:ulimit:核心文件大小:无法修改限制:不允许操作


28

Fedora 12 gcc 4.4.1

我正在做一些编程,我的程序给了我一个堆栈转储。

但是,没有核心文件可供我检查。

所以我做了:

ulimit -c unlimited

并得到以下错误信息:

bash: ulimit: core file size: cannot modify limit: Operation not permitted

我还尝试将ulimit设置为50000,但仍然遇到相同的错误。

ulimit -a的结果:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 12275
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Answers:


25

Grep在bash初始化文件中设置了硬限制。从bash手册页开始

硬限制一旦设置就无法增加;软限制可以增加到硬限制的值。

硬限制是通过ulimit -H标志设置的。它可以在/ etc / bash *或/ etc / profile *文件中设置。查找ulimit -Hc设置。


man ulimit:如果未指定-H和-S,则将同时设置软限制和硬限制。因此,寻找-H或-S并不一定会导致您找到正确的解决方案。只需使用grep表示ulimit,然后找出是否设置了-H或-S或两者都隐式设置。当然,这是十年后的事,因此自原始问题/答案以来,行为或手册页可能已更新。
吉姆

1

当我用作dropbearSSH服务器时,我发生了这种情况。显然,dropbear会在生成外壳程序之前设置一些硬性限制。

切换到OpenSSH解决了该问题。


确实。在main()的开始处,有一个对disallow_core()的调用,该调用调用setrlimit(2)。当然出于安全原因,但是必须有更好的方法。github.com/mkj/dropbear/blob/master/svr-main.c
圣代
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.