我有一个糟糕的无限循环程序,我想在命令行运行 – 但不是永远。 我想使用ulimit,所以如果它永远循环,它会被切断。
我尝试着:
$> bash -c "ulimit -t 1; java myinfloopprogram"
但是就像没有任何事情发生。 怎么回事,我的命令行命令是错误的? myinfloopprogram运行得很好。
我正在运行一个terminal,版本是Ubuntu 9.10。
循环程序实际上是使用CPU吗?
-t是CPU时间,而不是挂钟时间,所以如果你的程序实际上没有使用任何CPU时间,它将不会被杀死。
也许尝试这样的事情,而不是:
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
ulimit可能不是你所需要的。 你需要某种types的bash超时function。 没有什么内置的bash,但有几个脚本漂浮在做这个。 例如https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay