ulimit: 최대 코어 파일 크기 값은 얼마입니까?

ulimit: 최대 코어 파일 크기 값은 얼마입니까?

docker 내부에서 ulimit를 사용하여 무제한 코어 파일 크기를 설정하고 싶습니다. 난 이걸 할 수 없어

ulimit -c unlimited

Docker의 매개변수는 프레임워크에 의해 설정되므로 unlimited매개변수가 허용되지 않습니다. 그래서 값을 직접 전달하여 설정해야 합니다. 9223372036854775807이 최대값이라는 것을 알았지만 설정하면 다음과 같은 결과를 얻습니다.

ulimit: 9223372036854775807: limit out of range

전달할 수 있는 최대값을 찾는 방법은 무엇입니까 ulimit -c?

답변1

Linux에서는 RLIMIT_CORE제한( setrlimit(2)man 페이지 참조)이 바이트 단위로 표시됩니다. 대부분 ulimit의 다른 쉘의 경우 bash킬로바이트로 표시됩니다.

RLIMIT_CORELinux에서 bash에 전달할 수 있는 가장 큰 값(바이트)은 setrlimit()가장 큰 부호 없는 64비트 정수(18446744073709551615)입니다. 실제로는 특수 값이라는 점을 기억하세요. RLIM_INFINITYbash에 전달할 수 있는 가장 큰 값은 ulimit1024로 나누기, 18014398509481983입니다 . 그러나 이는 1023 보다 짧은 RLIMIT_INFINITY18446744073709550592 로 제한을 설정하지 않습니다 .18014398509481983 * 1024RLIM_INFINITY

답변2

이 플래그를 사용하여 Docker 런타임 컨테이너에 대한 제한을 설정할 수 있습니다 --ulimit.

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

"무제한"은 실제로 실제 값이 아니기 때문에 지원되는 값이 아니지만 -1은 이와 동일합니다.

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

관련 정보