Como posso verificar se um processo está parado na linha de comando?

7

Eu tenho o pid e acabei de interromper um programa usando

kill -stop PID

Agora quero continuar fazendo

kill -cont PID

Mas somente se já estiver parado. Como eu verificaria se está parado ou em execução?

    
por hermancain 06.11.2016 / 15:23

3 respostas

7

Você pode verificar se o processo está no estado parado, T is ps output.

Você pode fazer:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ] testa se a saída de ps -o state= -p PID é T , em caso afirmativo, envie SIGCONT para o processo. Substitua o PID pelo ID do processo real do processo.
por 06.11.2016 / 15:54
4

Outra maneira seria

pid=1
status='cat /proc/$pid/wchan'
if [ "$status" == "do_signal_stop" ] ; then
  echo "$pid sleeps: $status"
else
  echo "$pid does not sleep: $status"
fi
    
por 06.11.2016 / 16:02
-4
ps -e | grep | PROGRAM 

ou

while true;
do
kill program 
done 
wait 
    
por 06.11.2016 / 18:49