você pode me ajudar com este simples 'ulimit'?

você pode me ajudar com este simples 'ulimit'?

Tenho um programa de loop infinito mal codificado que desejo executar na linha de comando - mas não para sempre. Eu quero usar o ulimit, então se ele fizer um loop para sempre, ele será cortado.

Estou tentando:

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

mas é como se nada estivesse acontecendo. O que está acontecendo, meu comando de linha de comando está errado? myinfloopprogram funciona perfeitamente.

Estou executando um terminal e a versão é Ubuntu 9.10.

Responder1

O programa em loop está realmente usando CPU?

-t é para o tempo de CPU, não para o tempo do relógio de parede; portanto, se o seu programa não estiver realmente usando nenhum tempo de CPU, ele não será eliminado.

Responder2

Talvez tente algo assim:

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

Responder3

ulimitprovavelmente não é o que você precisa. Você precisa de algum tipo de recurso de tempo limite do bash. Não há nada embutido no bash, mas existem alguns scripts circulando para fazer isso. por exemplohttps://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

informação relacionada