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?

Hermancain
la source
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.
heemayl
la source
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
Juste moi
la source
-4
ps -e | grep | PROGRAM 

ou

while true;
do
kill program 
done 
wait 
MastersProgression
la source