타임아웃 스크립트는 리눅스에서 프로세스의 시간과 메모리 소비를 제한하는 유용한 리소스 모니터링 프로그램입니다. 프로그램을 제어하고 시간 및 메모리 제한을 강제로 시행하여 이러한 매개변수를 위반할 경우 프로그램을 종료시킵니다.
설치가 필요하지 않으며, 단순히 타임아웃 프로그램을 사용하여 명령과 인수를 함께 실행하면 명령의 메모리 및 시간 소비를 모니터링하고, 프로세스가 제한을 벗어나면 프로세스를 중단시키고 미리 정의된 메시지로 알립니다.
이 스크립트를 실행하려면 리눅스 시스템에 Perl 5이 설치되어 있고 /proc 파일 시스템이 마운트되어 있어야 합니다.
리눅스 시스템에 설치된 Perl 버전을 확인하려면 다음 명령을 실행하십시오.
$ perl -v

다음으로, 타임아웃 리포지토리를 git 명령을 사용하여 시스템에 복제한 다음, cd 명령을 사용하여 로컬 리포지토리로 이동하고 일반적인 리눅스 명령으로 호출하십시오.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
이제 타임아웃 스크립트가 어떻게 작동하는지 살펴보겠습니다.
기본 메모리 제한(가상 메모리 100M):
첫 번째 예제는 100M의 가상 메모리를 사용하여 프로세스의 메모리 사용량을 제한하는 방법을 보여줍니다. 이는 -m
플래그를 사용하여 수행됩니다. 메모리의 기본 단위는 킬로바이트입니다.
여기서 stress-ng 명령은 10분 동안 사용 가능한 메모리의 40%를 사용하는 4개의 가상 메모리 스트레서(VMS)를 실행합니다. 따라서 각 스트레서는 10%의 사용 가능한 메모리를 사용합니다.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

timeout 명령어의 출력을 고려할 때, stress-ng 작업자 프로세스는 1.16초 후에 종료되었습니다. 이는 VMS의 메모리 소비량(438660 킬로바이트)이 stress-ng 및 자식 프로세스에 허용된 가상 메모리 사용량을 초과했기 때문입니다.
프로세스의 기본 시간 제한:
프로세스의 시간 제한을 설정하려면 다음과 같이 -t
플래그를 사용하십시오.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

위의 예에서 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.
다음과 같은 관련 기사들도 동등하게 유용할 수 있습니다:
- ‘top’을 사용하여 메모리 사용량 상위 15개 프로세스 찾는 방법
- CPUTool – 리눅스에서 모든 프로세스의 CPU 사용률 제한 및 제어
- CPULimit 도구를 사용하여 리눅스에서 프로세스의 CPU 사용률 제한하는 방법
timeout 스크립트는 기본적으로 리눅스에서 프로세스의 시간 및 메모리 소비를 제한하는 간단한 리소스 모니터링 프로그램입니다. timeout 스크립트에 대한 피드백은 아래의 댓글 양식을 통해 보내주시기 바랍니다.
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/