你能帮我解决这个简单的‘ulimit’吗?

你能帮我解决这个简单的‘ulimit’吗?

我有一个编码很差的无限循环程序,我想在命令行上运行它 - 但不是永远运行。我想使用 ulimit,这样如果它永远循环,它就会被切断。

我想:

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

但好像什么都没发生。发生了什么事,我的命令行命令错了吗?我的infloopprogram运行正常。

我正在运行终端,版本是 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

相关内容