2012-10-18 3 views
4

Linux에서 ulimit 명령으로 bash를 통해 시작된 프로세스에서 사용하는 메모리를 제한하고 싶습니다. 나는 ulimit를 지원하기 위해 어떤 OS 메커니즘이 사용되는지 궁금해했다. 특히 cgroup을 기반으로합니까? 점점 한계를 설정하기위한"ulimit -v"는 Linux OS에서 어떻게 작동합니까?

+0

스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

답변

2

리눅스 API 방법은 getrlimit(2) and setrlimit(2)

제한은 프로세스 공간 내에서 관리되고 있습니다. 하위 프로세스는 상위 프로세스의 한계를 상속합니다. 제한은 POSIX 표준의 일부이므로 모든 POSIX 호환 운영 체제에서 지원합니다 (Linux, BSD, OSX).

cgroups는 Linux마다 다르며 Linux 설치에도 필요하지 않습니다. cgroup을 사용하여 제한을 관리 할 수 ​​있는지 확실하지 않지만 비표준이 될 수 있습니다.

+0

나는'setrlimit (2)'a * method *를 호출하지 않을 것이다. 이것은 시스템 호출이다. –

2

"ulimit"은 기본적으로 시대 착오적입니다. 리소스가 필요하면 상자에서 벗어나 실제 제한을 두어서는 안되며 리소스를 제한하려면 따옴표를 만드는 것이 좋습니다. 여기

좋은 개요입니다 :에서보고

여러 사람이 페이지는 다음과 같습니다

+0

그러나'ulimit'은 bash 내장 함수 ('setrlimit' 시스템 호출)이기도합니다. 원래의 포스터가 bash 내장 함수에 대해 이야기하고있는 것을 알았습니다. –

+0

감사합니다. Basile이 맞다. 나는 "ulimit -v"bash 명령을 언급하고있다. 그 명령은 쓸모 없습니까? 아니면 여전히 setrlimit를 호출하여 작동합니까? – morfys

0

내가 softlimit 사용 DJB의 daemontools 패키지의 일부.

예를 들어 softlimit -m 1048576 nautilus과 같이 지정하면 프로그램 (노틸러스)이 1MiB의 메모리 사용량을 초과하지 않습니다 (이 경우에도 즉시 실패합니다).