Como posso encontrar processos wget com mais de um dia no unix?

0

Usando este comando, posso encontrar todos os processos para wget :

ps -aef | grep -i wget

Mas eu quero um comando ou um script que possa me fornecer os processos com mais de um dia para wget e kill .

    
por ravi kumar 17.10.2014 / 16:48

2 respostas

0

Você pode tentar formatar a saída de ps:

ps -ae -o start,pid,command

Se o processo tiver mais de 24 horas, ele mostrará a data em vez da hora na primeira coluna.

    
por 17.10.2014 / 17:23
0

Desde que você diga "mais de 24 horas" quando disser mais que um dia, isso deve funcionar.

for wgetpid in $(ps -eo "%t %p %c" | grep "^ *[0-9][0-9]*-" | grep wget | cut -d ' ' -f 2);
do
    kill -9 $wgetpid
done

O comando ps -eo produz o tempo (no formato [[dd-] hh:] mm: ss), o pid e o nome do processo.

Se o processo estiver em execução há menos de 24 horas, não há - no tempo.

O primeiro comando grep combina linhas que começam com (^) zero ou mais espaços (processos em execução por 1 a 9 dias são recuados se houver algum processo em execução por 10 ou mais dias), um número, zero ou mais números (para um número de dígitos de 2+ ou mais), então o - indica que o número anterior era de dias.

O segundo grep filtra os processos abaixo para wget.

O comando cut pega apenas o segundo campo (o pid).

Em seguida, o loop for percorre esses pids e mata cada um deles.

    
por 17.10.2014 / 21:25

Tags