Назад | Перейти на главную страницу

Вы можете помочь мне с этим простым «ulimit»?

У меня есть плохо написанная программа с бесконечным циклом, которую я хочу запустить в командной строке - но не навсегда. Я хочу использовать 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