controlar tempo de um processo [RESOLVIDO]

1. controlar tempo de um processo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 29/07/2011 - 08:54h

Pessoal,

Queria saber se é possível e como fazer o seguinte:

quero controlar o tempo que um processo está gastando e encerrá-lo caso o mesmo demore mais de 5 segundos para terminar, teria como?

um exemplo de processo a monitorar:

tesseract imagem imagem_texto

Obrigado desde já.



  


2. Re: controlar tempo de um processo [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 29/07/2011 - 10:19h

Ola!

Nao sei se existe uma ferramenta especifica para esse proposito, porem voce pode criar a sua (como tudo no Linux :) ).

Por exemplo, voce pode dar um "ps ax -o pid,start_time,comm" e filtrar a saida pelo nome do processo que deseja monitorar. Provavelmente, recebera apenas uma linha de resposta apos o filtro.

Dai pegue a segunda coluna da resposta, que eh a coluna do horario de inicio do processo.
De posse desse dado, calcule a diferenca entre a hora atual e a de inicio do processo e, caso seja superior ao seu timeout, mande um sinal de termino via kill para o pid do processo (primeira coluna da resposta).

Contras:
* Precisao em minutos, nao em segundos.
* Um pouco trabalhoso para quem nao domina scripts em shell.

Bom, essa eh uma solucao imediata. Certamente deve haver algum modo de ter uma precisao em segundos, talvez ate uma ferramenta que faca isso automaticamente para voce, mas isso demandaria um pouco de pesquisa a respeito.

Vou pesquisar aqui e, caso encontre algo, lhe mando.

Espero ter ajudado!


3. Re: controlar tempo de um processo [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 29/07/2011 - 10:26h

2.10

Ola!

O ps mesmo tem precisao em segundos.

Substitua o comando ps que mandei por:
"ps --no-header aux | grep -i [nome do seu processo] | cut -d ' ' -f 2,10"

Esse comando retornara na primeira coluna o pid do seu processo e, na segunda, o tempo de execucao em segundos do processo.

O restante da ideia permanece a mesma, porem agora tens precisao em segundos.

De qualquer maneira, continuo minha pesquisa e, caso ache algo, posto aqui.


4. Re: controlar tempo de um processo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 29/07/2011 - 23:51h

Opa obrigado pelas respostas, vou usar algumas ideias suas e continuar pesquisando também, pois também creio que exista algo tipo um nice, que ao chamar o processo não deixar ele usar mais que 3 segundos de CPU, por exemplo.

A solução vai ser empregada para o caso em que preciso que um processo seja executado, mas ele não pode demorar mais de 3 segundos, se demorar esse tempo quero matá-lo :-)

Abraços


5. Re: controlar tempo de um processo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 31/07/2011 - 04:20h

Achei a solução!!!!!!!!!
TEMPO=3

<comando> & sleep $TEMPO; killall <comando>

Se antes de 3 segundos o <comando> terminar, o retorno da instrução acima vai ser 1, porque o comando killall vai dar erro :-), caso contrário, se o comando demorar 3 segundos o comando killall vai matá-lo e o retorno da instrução vai ser 0.

Que maravilha, como sempre a solução de problemas difíceis acaba sendo simples :-).

Agora posso dormir.

Abraços







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts