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

3

Eu tenho um programa de loop infinito mal codificado que quero executar na linha de comando - mas não para sempre. Eu quero usar o ulimit, então se ele for 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? O myinfloopprogram é executado muito bem.

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

    
por rlb.usa 25.01.2010 / 22:28

3 respostas

6

O programa de looping está realmente usando a CPU?

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

    
por 25.01.2010 / 22:49
1

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
    
por 25.01.2010 / 23:26
1

ulimit provavelmente não é o que você precisa. Você precisa de algum tipo de recurso de tempo limite bash. Não há nada embutido no bash, mas existem alguns scripts flutuando para fazer isso. p. ex. link

    
por 26.01.2010 / 11:35