ulimit를 사용하여 스크립트가 사용할 수 있는 메모리 양 제한

ulimit를 사용하여 스크립트가 사용할 수 있는 메모리 양 제한

우분투 시스템이 있고 정기적으로 실행되는 스크립트가 있습니다. 이 스크립트가 사용할 수 있는 최대 메모리 양을 제한해야 합니다. AFAIK ulimit는 이 작업을 수행하는 명령이지만 작동하게 할 수는 없습니다.

예를 들어 다음 스크립트가 있습니다.

#! /bin/bash

ulimit -m 1024

X="x"
seq 100 | while read LINE ; do
    X="$X$X"
done

이렇게 하면 $X크기가 커질 것이며 이 예는 제가 제한하고 싶은 종류일 뿐입니다. 그러나 ulimit 호출이 작동하지 않는 것 같습니다. 스크립트를 실행할 수 있고 죽지 않으며 top스크립트가 많은 메모리를 얻는다는 것을 보여줍니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이 스크립트가 특정 양의 메모리 이상을 사용하지 않도록 하려면 어떻게 해야 합니까?

답변1

다음 옵션을 사용하여 스크립트에서 오류가 발생하도록 할 수 있었습니다 -v.

#!/bin/bash

ulimit -v 100000
for i in {1..10000000}
do
    x="x"$x
done

Bash 매뉴얼 페이지는 다음과 같이 말합니다:

-m 최대 상주 세트 크기(많은 시스템이 이를 준수하지 않음)
              이 한도)

답변2

가상 메모리를 제한해 보세요.

ulimit -v 1024 

관련 정보