web-dev-qa-db-ja.com

コマンドラインからプロセスが停止しているかどうかを確認するにはどうすればよいですか?

私はpidを持っていますが、使用しているプログラムを停止しました

kill -stop PID

今、私はそれを続けたいです

kill -cont PID

ただし、すでに停止している場合のみです。停止しているか実行中であるかを確認するにはどうすればよいですか?

8
hermancain

プロセスが停止状態であるかどうかを確認できます。Tps出力です。

できるよ:

_[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
_
  • [ "$(ps -o state= -p PID)" = T ]は、_ps -o state= -p PID_の出力がTかどうかをテストします。そうであれば、SIGCONTをプロセスに送信します。 PIDをプロセスの実際のプロセスIDに置き換えます。
8
heemayl

別の方法は

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
5
JustMe