단 하나의 기능을 사용하여 단일 Linux 프로세스의 메모리 사용량을 제한하시겠습니까?

단 하나의 기능을 사용하여 단일 Linux 프로세스의 메모리 사용량을 제한하시겠습니까?

timeout()이는 단일 프로세스의 CPU 시간 사용량을 제한하는 기능을 갖춘 쉘 스크립트입니다. 유사한 기능을 통해 단일 Linux 프로세스의 메모리 사용량을 제한할 수 있습니까?

#!/bin/bash

################################################################################
# Executes command with a timeout
# Params:
#   $1 timeout in seconds
#   $2 command
# Returns 1 if timed out 0 otherwise
timeout() {

    time=$1

    # start the command in a subshell to avoid problem with pipes
    # (spawn accepts one command)
    command="/bin/sh -c \"$2\""

    expect -c "set echo \"-noecho\"; set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { exit 0 }"

    if [ $? = 1 ] ; then
        echo "Timeout after ${time} seconds"
    fi
}


timeout 100 "./program.exe"

done
exit 0

비슷한 질문을 읽었습니다.단일 Linux 프로세스의 메모리 사용량 제한, 아래의 모든 답변은 추가 도구 또는 구성에 의존합니다. 몇 가지를 시도했지만 실패했습니다(예: 허용된 답변https://unix.stackexchange.com/a/44988/302092도구가 권장되었지만 Github 페이지에 제공된 예제를 실행했을 때 예상치 못한 결과가 나왔습니다.

ulimitulimit작동하지만 마지막 프로세스가 완료된 후 무제한으로 재설정 해야 합니다 . 그래서 현재 이것을 달성하기 위한 더 쉬운 방법(아마도 함수)이 있는지 궁금합니다.

관련 정보