ulimit:最大核心文件大小值是多少

ulimit:最大核心文件大小值是多少

我想在 docker 内使用 ulimit 设置无限的核心文件大小。我不能这样做

ulimit -c unlimited

因为docker的参数是由框架设置的,所以不接受unlimited参数。所以我需要通过直接传递值来设置它。我发现 9223372036854775807 是最大值,但是当我设置它时,我得到:

ulimit: 9223372036854775807: limit out of range

如何找到可以传递的最大值ulimit -c

答案1

在 Linux 上,RLIMIT_CORE限制(参见setrlimit(2)手册页)以字节为单位表示。而对于ulimitofbash和大多数其他 shell,它以千字节为单位表示。

RLIMIT_CORE您可以在 Linux 上传递给的最大值(以字节setrlimit()为单位)将是最大的无符号 64 位整数(18446744073709551615),请记住它实际上是 的特殊值RLIM_INFINITY,您可以传递给 bash 的最大值ulimit将除以1024, 18014398509481983,但是,这不会将限制设置为RLIMIT_INFINITY18446744073709550592 18014398509481983 * 1024,它比 1023 短RLIM_INFINITY

答案2

您可以使用该标志设置 Docker 运行时容器的限制--ulimit

docker run --ulimit core=<size> ...

请注意,“unlimited”不是受支持的值,因为它实际上不是实际值,但 -1 相当于它:

$ docker run -it --ulimit core=-1 ubuntu:18.04 sh -c 'ulimit -a | grep core'
coredump(blocks)     unlimited

相关内容