ps を使用してフォアグラウンド プロセスを表示する

ps を使用してフォアグラウンド プロセスを表示する

ps を使ってバックグラウンドプロセスを見ることができます。しかし、フォアグラウンドプロセスを見る方法はありますか? たとえば、

$nohup プロセス1 &

それから

ps -ef | grep "プロセス1"

実行中のプロセス「process1」が表示されます。しかし、上記のコマンドでは、次のようにフォアグラウンドプロセスが実行されているかどうかは表示されません。

$プロセス2

答え1

デフォルトでは、同じターミナル ウィンドウから開始されたプロセスなど、呼び出されたのとps同じターミナル上にあるプロセスが表示されるため、混乱する可能性があります。ps

ps -u $LOGNAME端末名がわかっている場合は、 または を試してくださいps -t $THETTYNAME1,$THETTYNAME2。(端末名は通常、「ttyN」または「pts/N」のようになります)。

答え2

奇妙なことに、ps コマンドを使用すると、フォアグラウンドとバックグラウンドの両方のすべてのアクティブなプロセスのステータスを監視できます。

たとえば、最初のシェルで次のプロセスを開始します。

$ startNetworkServer 
Security manager installed using the Basic server security policy.
Apache Derby Network Server - 10.3.2.1 - (599110) started and ready to accept connections on port 1527 at 2010-06-18 14:14:33.277 GMT 

そして別のシェルでは:

$ ps aux  | grep NetworkServer | grep -v grep
pascal    5928  0.3  1.4 661492 29216 pts/0    Sl+  16:14   0:03 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start

プロセスは期待どおりにリストされます (+フォアグラウンド プロセス グループ内にあることが示されます)。

答え3

質問:

「フォアグラウンドプロセスを表示する方法はありますか?」質問はその後、ps -efフォアグラウンドで実行されているプロセスが表示されないと主張し続けます。

答え:

はい、方法があります。また:ps -ef するフォアグラウンドで実行中のプロセスを表示 -しかし、それは示されていないプロセスのこれはドキュメント ( man ps) で説明されており、簡単な実験で検証できます。次の例を考えてみましょう。

1 つのターミナルで、次を実行します。

ping 8.8.8.8 > /dev/null

別の端末で:

ps -ef | grep ping | grep -v grep
seamus        1161   974  0 23:20 pts/1    00:00:00 ping 8.8.8.8

ps -ef提供されないことに注意してください出力に情報が含まれている。しかしman ps情報利用可能です-oキーワードと一緒に引数を使用するstat:

ps -eo pid,stat,command | grep ping | grep -v grep
 1161 S+   ping 8.8.8.8

これは次のことを物語っています:

  • プロセスPIDは1161キーワード経由pid
  • プロセスS+キーワード経由stat
  • キーワードはプロセスの生成をcommand示しますping 8.8.8.8

の値S+解読されたman psの見出しの下には、PROCESS STATE CODE次のことが書かれています。

S 割り込み可能スリープ(イベントの完了を待機中)
+フォアグラウンドプロセスグループ内

QED

ps -efPIDが であるプロセスをリストし1161ps -eo pid,stat,commandPID1161前景プロセス。


注1: キーワード引数については、の見出しの下-oで説明されています。ここでは、キーワードが2文字のプロセスを生成することが説明されています。man psSTANDARD FORMAT SPECIFIERSstatキーワードはstate1文字のみを返します

注2:これは、私の Debian ベースのシステム (バージョン として報告されていますps from procps-ng 3.3.15) と、macOS 10.15 (BSD バージョンの から派生ps) で動作します。

関連情報