当尝试从因段错误退出的程序获取核心文件时,我发现我需要使用 ulimit 命令设置核心文件大小(该值默认设置为 0)。
这些是默认值(当我第一次打开 bash 终端时)。
**core file size (blocks, -c) 0**
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31146
max locked memory (kbytes, -l) 65536
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31146
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
首次设置此限制后,我可以随时将其设置为较低的限制,但永远无法将其设置为比现有限制更高的限制。我必须关闭 bash 并再次打开它。这是什么原因?
user@PC:~$ ulimit -c 10
user@PC:~$ ulimit -c
10
user@PC:~$ ulimit -c 11
**bash: ulimit: core file size: cannot modify limit: Operation not permitted**
user@PC:~$ ulimit -c
10
user@PC:~$ ulimit -c
9
答案1
由于您不是以 root 身份运行,因此无法增加核心文件大小限制。
Linux 允许每个人降低限制,但只有 root 才能增加限制。
这是一个小问题:第一个 ulimit 设置值不需要 root 身份,但是由于您不是 root 身份,因此增加该值会失败。