Comment puis-je vérifier si un processus est arrêté à partir de la ligne de commande?


8

J'ai le pid et je viens d'arrêter un programme utilisant

kill -stop PID

Maintenant, je veux continuer en faisant

kill -cont PID

Mais seulement si c'est déjà arrêté. Comment puis-je vérifier s'il est arrêté ou en cours d'exécution?


vous dites un programme dans le titre, donc vous voulez dire le nom ou vous voulez dire le PID comme dans l'exemple?
aurelien

Voulez-vous le continuer au premier plan (en saisissant le terminal) ou en arrière-plan?
Eric Towers

Réponses:


8

Vous pouvez vérifier si le processus est à l'état arrêté, Test pssorti.

Tu peux faire:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]teste si la sortie de ps -o state= -p PIDest T, si c'est le cas, envoie SIGCONTau processus. Remplacez PID par l'ID de processus réel du processus.

5

Une autre façon serait

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.