你能幫我解決這個簡單的「ulimit」嗎?

你能幫我解決這個簡單的「ulimit」嗎?

我有一個編碼錯誤的無限循環程序,我想在命令行上運行它 - 但不是永遠運行。我想使用 ulimit,所以如果它永遠循環,它就會被切斷。

我想:

$> bash -c "ulimit -t 1; java myinfloopprogram"

但就像什麼都沒發生一樣。這是怎麼回事,是我的命令列命令錯誤嗎? myinfloop程式運作得很好。

我正在運行終端,版本是 Ubuntu 9.10 。

答案1

循環程式實際上使用CPU嗎?

-t 表示 CPU 時間,而不是掛鐘時間,因此如果您的程式實際上沒有使用任何 CPU 時間,則它不會被終止。

答案2

也許嘗試這樣的事情:

java myinfloopprogram &
pid=$!
for i in $(seq 1 60); do
    kill -0 $pid >/dev/null || break
    sleep 1
done
kill -0 $pid >/dev/null || kill -TERM $pid

答案3

ulimit可能不是你需要的。您需要某種 bash 逾時功能。 bash 中沒有內建任何內容,但有一些腳本可以做到這一點。例如https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

相關內容