У меня есть плохо написанная программа с бесконечным циклом, которую я хочу запустить в командной строке - но не навсегда. Я хочу использовать ulimit, поэтому, если он зацикливается навсегда, он будет отключен.
Я стараюсь:
$> bash -c "ulimit -t 1; java myinfloopprogram"
но вроде ничего не происходит. Что происходит, моя команда командной строки неверна? myinfloopprogram работает нормально.
Я использую терминал, и его версия - Ubuntu 9.10.
Программа цикла действительно использует CPU?
-t для времени процессора, а не времени настенных часов, поэтому, если ваша программа фактически не использует время процессора, она не будет убита.
ulimit
вероятно, это не то, что вам нужно. Вам нужна какая-то функция тайм-аута bash. В bash ничего не встроено, но для этого есть несколько скриптов. например https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unneeded-delay
Может, попробуйте вместо этого что-нибудь вроде этого:
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