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?


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.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.