如何取消对核心转储文件大小的限制

Pet*_*sta 11 settings 12.10 ulimit

作为普通用户,我想增加核心转储文件的最大大小限制。使用bash,我可以这样设置:

$ ulimit -c 100
Run Code Online (Sandbox Code Playgroud)

第一次设置时效果很好。但是,下次使用该命令时,我只能将此限制设置为不超过 100 的值。一般而言,我只能在登录后第一次使用此命令时将其设置为任意值。接下来的所有时间,可能的值都受初始设置值的限制。

如何在命令的多次使用中保持这种持久性?

Kev*_*wen 9

根据@Peter Bašista在他自己的问题中的回答:

起初,我认为这是一个错误,这就是我开始这个问题的原因。但事实证明,这只是一个完全正确的行为。事实证明,RTFM 的说法也适用于此。

正如所man bash揭示的,ulimit内置命令具有附加参数:-H用于设置所谓的限制和-S 用于设置所谓的限制。此外,如果没有给出这些选项,默认行为是ulimit尝试 同时将软限制和硬限制设置为相同的值。这就是问题所在。

现在有来自bash手册页的引用:

硬限制一旦设置,非 root 用户就不能再增加;

所以,我们走了。ulimit命令的正确用法应该始终牢记这一点。最重要的是,除非您确定知道自己在做什么(当时我显然不知道),否则不应在没有-H-S选项的情况下使用它 。

我应该做的是这样的:

登录后: ulimit -H -c unlimited

每次我想更改最大核心转储大小限制时 ulimit -S -c <new size>

所以,就是这样。我希望它可以帮助那些可能遇到类似问题的人。