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 페이지에 제공된 예제를 실행했을 때 예상치 못한 결과가 나왔습니다.
ulimit
ulimit
작동하지만 마지막 프로세스가 완료된 후 무제한으로 재설정 해야 합니다 . 그래서 현재 이것을 달성하기 위한 더 쉬운 방법(아마도 함수)이 있는지 궁금합니다.