¿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?


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.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.