¿Cómo puedo verificar si un proceso se detiene desde la línea de comandos?

8

Tengo el pid y acabo de detener un programa usando

kill -stop PID

Ahora quiero continuar haciendo

kill -cont PID

Pero solo si ya está detenido. ¿Cómo verificaría si está detenido o funcionando?

hermancain
fuente
dices un programa en el título, ¿te refieres al nombre o al PID como en el ejemplo?
aurelien
¿Desea continuar en primer plano (agarrando el terminal) o en segundo plano?
Eric Towers el

Respuestas:

8

Puede verificar si el proceso está en estado detenido, Tse psemite.

Tu puedes hacer:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]prueba si la salida de ps -o state= -p PIDes T, si es así, enviar SIGCONTal proceso. Reemplace PID con la ID del proceso real del proceso.
heemayl
fuente
5

Otra forma sería

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
Solo yo
fuente
-4
ps -e | grep | PROGRAM 

o

while true;
do
kill program 
done 
wait 
MaestrosProgresión
fuente