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.