コマンドラインでプロセスが停止しているかどうかを確認する方法は?

コマンドラインでプロセスが停止しているかどうかを確認する方法は?

私はPIDを持っていて、次のようにプログラムを停止しました。

kill -stop PID

今はこれをやりたいです。

kill -cont PID

しかし、それが停止した場合にのみ可能です。停止しているか実行中であるかをどうやって確認できますか?

答え1

プロセスが停止し、出力があるかどうかをT確認できますps

あなたはできます:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]出力が認知テストされps -o state= -p PIDTそうであればSIGCONTプロセスに送信されます。 PIDをプロセスの実際のプロセスIDに置き換えます。

答え2

別の方法は

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

答え3

ps -e | grep | PROGRAM 

または

while true;
do
kill program 
done 
wait 

関連情報