리눅스에서 프로세스의 시간 및 메모리 사용량을 제한하는 방법

타임아웃 스크립트는 리눅스에서 프로세스의 시간과 메모리 소비를 제한하는 유용한 리소스 모니터링 프로그램입니다. 프로그램을 제어하고 시간 및 메모리 제한을 강제로 시행하여 이러한 매개변수를 위반할 경우 프로그램을 종료시킵니다.

설치가 필요하지 않으며, 단순히 타임아웃 프로그램을 사용하여 명령과 인수를 함께 실행하면 명령의 메모리 및 시간 소비를 모니터링하고, 프로세스가 제한을 벗어나면 프로세스를 중단시키고 미리 정의된 메시지로 알립니다.

이 스크립트를 실행하려면 리눅스 시스템에 Perl 5이 설치되어 있고 /proc 파일 시스템이 마운트되어 있어야 합니다.

리눅스 시스템에 설치된 Perl 버전을 확인하려면 다음 명령을 실행하십시오.

$ perl -v
Check Perl Version in Linux

다음으로, 타임아웃 리포지토리를 git 명령을 사용하여 시스템에 복제한 다음, cd 명령을 사용하여 로컬 리포지토리로 이동하고 일반적인 리눅스 명령으로 호출하십시오.

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

이제 타임아웃 스크립트가 어떻게 작동하는지 살펴보겠습니다.기본 메모리 제한 (가상 메모리 100M):

기본 메모리 제한(가상 메모리 100M):

첫 번째 예제는 100M의 가상 메모리를 사용하여 프로세스의 메모리 사용량을 제한하는 방법을 보여줍니다. 이는 -m 플래그를 사용하여 수행됩니다. 메모리의 기본 단위는 킬로바이트입니다.

여기서 stress-ng 명령은 10분 동안 사용 가능한 메모리의 40%를 사용하는 4개의 가상 메모리 스트레서(VMS)를 실행합니다. 따라서 각 스트레서10%의 사용 가능한 메모리를 사용합니다.

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Limiting Memory of Process

timeout 명령어의 출력을 고려할 때, stress-ng 작업자 프로세스는 1.16초 후에 종료되었습니다. 이는 VMS의 메모리 소비량(438660 킬로바이트)이 stress-ng 및 자식 프로세스에 허용된 가상 메모리 사용량을 초과했기 때문입니다.

프로세스의 기본 시간 제한:

프로세스의 시간 제한을 설정하려면 다음과 같이 -t 플래그를 사용하십시오.

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Time Limiting of Process

위의 예에서 stress-ng CPU+SYS 시간이 4를 초과할 때 작업자 프로세스가 종료됩니다.

프로세스의 시간과 메모리 제한

메모리시간을 동시에 제한할 수도 있습니다.

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout은 --detect-hangups와 같은 일부 고급 옵션을 지원하며, 이는 행

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

당신은 RSS (resident set size) 메모리 한도를 --memlimit-rss 또는 -s 스위치를 사용하여 모니터링할 수 있습니다.

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

또한 프로세스의 종료 코드 또는 신호+128을 반환하려면 다음과 같이 --confess 또는 -c 옵션을 사용하십시오.

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

더 많은 정보 및 사용 예제는 timeout Github 저장소를 참조하십시오: https://github.com/pshved/timeout.

다음과 같은 관련 기사들도 동등하게 유용할 수 있습니다:

  1. ‘top’을 사용하여 메모리 사용량 상위 15개 프로세스 찾는 방법
  2. CPUTool – 리눅스에서 모든 프로세스의 CPU 사용률 제한 및 제어
  3. CPULimit 도구를 사용하여 리눅스에서 프로세스의 CPU 사용률 제한하는 방법

timeout 스크립트는 기본적으로 리눅스에서 프로세스의 시간 및 메모리 소비를 제한하는 간단한 리소스 모니터링 프로그램입니다. timeout 스크립트에 대한 피드백은 아래의 댓글 양식을 통해 보내주시기 바랍니다.

Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/