Como matar um trabalho com um loop infinito

0

Eu criei um script de shell chamado df.sh:

#!/bin/sh
while true ; do 
df -hT
sleep 30
done &

então corro ./df.sh (dou permissão de execução).

Depois de executá-lo, quero finalizar o loop, mas não consigo.

    
por Saumik Satapathy 23.01.2017 / 09:53

2 respostas

2

Use

$ pkill -f df.sh

Isso enviará um sinal de término para o script e o script será encerrado assim que a chamada sleep 30 atual terminar.

Como alternativa, use ps para encontrar o ID do processo do script e envie um sinal de término para ele dessa maneira:

$ ps

$ kill pid

(onde pid é o ID do processo inteiro do script, conforme listado por ps )

    
por 23.01.2017 / 10:07
0

Primeiro de tudo, se esse for o seu script, eu recomendo que você use & quando chamar o script não no final do while :

./df.sh &

Eu recomendo que você use kill para enviar um sinal de término ou kill -9 para enviar um sinal de eliminação se o processo não responder depois de obter o pid do processo usando ps com grep ou pgrep , você pode usar pkill , mas , com cuidado ele chamará todos os df.sh processos se você estiver executando mais de uma vez, e se você usá-lo com pkill -f ele irá matar qualquer processo que corresponde a df.sh padrão

    
por 24.01.2017 / 15:08