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

8

Eu tenho o pid e acabei de parar um programa usando

kill -stop PID

Agora eu quero continuar fazendo isso

kill -cont PID

Mas apenas se já estiver parado. Como verifico se está parado ou em execução?

hermancain
fonte
você diz um programa no título, quer dizer o nome ou o PID como no exemplo?
Aurélien
Deseja continuar em primeiro plano (agarrando o terminal) ou em segundo plano?
Eric Towers

Respostas:

8

Você pode verificar se o processo está no estado parado, Té psproduzido.

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, se assim for, enviar SIGCONTpara o processo. Substitua o PID pelo ID do processo real.
heemail
fonte
5

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
Apenas eu
fonte
-4
ps -e | grep | PROGRAM 

ou

while true;
do
kill program 
done 
wait 
MastersProgression
fonte