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
動作しますが、最後のプロセスが完了した後は無制限にリセットする必要があります。だから私は現在これを達成するためのより簡単な方法(おそらく関数)があるかどうか疑問に思います。