Come posso verificare se un processo viene interrotto dalla riga di comando?


8

Ho il pid e ho appena smesso di usare un programma

kill -stop PID

Ora voglio continuare facendo

kill -cont PID

Ma solo se è già fermo. Come verificherei se è stato arrestato o in esecuzione?


dici un programma nel titolo, quindi intendi il nome o intendi il PID come nell'esempio?
aurelien,

Vuoi continuare in primo piano (afferrando il terminale) o in background?
Eric Towers,

Risposte:


8

È possibile verificare se il processo è in stato di arresto, Tviene psemesso.

Tu puoi fare:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]verifica se l'output di ps -o state= -p PIDè T, in tal caso invia SIGCONTal processo. Sostituire PID con l'ID processo effettivo del processo.

5

Un altro modo sarebbe

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.