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

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

У меня есть плохо закодированная бесконечная циклическая программа, которую я хочу запустить в командной строке, но не вечно. Я хочу использовать ulimit, чтобы, если она будет зацикливаться вечно, она обрывалась.

Я пытаюсь:

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

но как будто ничего не происходит. Что происходит, моя команда в командной строке неверна? myinfloopprogram работает просто отлично.

Я использую терминал, версия Ubuntu 9.10.

решение1

Использует ли программа-цикл на самом деле ресурсы ЦП?

-t — для процессорного времени, а не для времени по часам, поэтому, если ваша программа фактически не использует процессорное время, она не будет завершена.

решение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 timeout. В bash ничего не встроено, но есть несколько скриптов, которые это делают. напримерhttps://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

Связанный контент