psコマンド: "r"オプションはどのように機能しますか?どうやって使うべきですか?

psコマンド: "r"オプションはどのように機能しますか?どうやって使うべきですか?

オプションのpsコマンドr

man psそれに従って見せてください

r      Restrict the selection to only running processes.

そしてps --help aこれに基づいて

r                   only running processes

tty6コマンドが実行されると、次のようになりますsleep 5000 &jobs

[1]+ Running sleep 5000 &

期待して遵守する走る用語が表示されます。これは2つの文書ソースとして機能します。

さて、同じttyでコマンドを実行すると、次のようなps r結果が得られます。

  PID TTY     STAT   TIME COMMAND
 5508 tty6    R+     0:00 ps r

なぜsleepコマンドが表示されないのですか?

以前は、次のように仮定していました。バックステージコースyes今すぐコマンドを実行すると、y期待どおりに永久に印刷されます。フォアグラウンドプロセスtty6ブロックされたためはいコマンドが別のtty(たとえばtty1)で実行されると、次のことps -t tty6 rが行われます。

  PID TTY      STAT   TIME COMMAND
 5516 tty6     R+     0:21 yes

したがって、これまでは次のようにr適用されると仮定することができます。走る 展望プロセス。

したがって、このrオプションは、どのスクリプトまたはコマンド/ツール(たとえば、mavenのターゲットまたはgradleのタスク)が実行され、長い間実行され続けるのか(特定のttyをターゲットとする)を知るのに役立ちます。しかも文書の二箇所に現れるから「プロセスのみ実行」文章(観察「コース」)複数形) 次のコマンドパターンが考慮されると仮定します。

ps -t tty3 -t tty4 -t tty5 -t tty6 r

しかし、上記の各ttyに対して、次のコマンドを次のように実行すると、次のことに気づきました。

cmatrix           # it is a screensaver and remains running
man ls            # it remains opened
ping spring.io    # it remains showing in the terminal each echo message
yes > /dev/null   # it remains running but not showing nothing in the terminal

実行すると、ps -t tty3 -t tty4 -t tty5 -t tty6 r次のように表示されます。

  PID TTY      STAT   TIME COMMAND
 5598 tty6     R+     0:05 yes

なぜまたフォアグラウンドプロセス考慮されていませんか?

質問

  • このオプションはどのようにr機能しますか? - どうすればいいですか?

目的/目標

私の理解には、次のような多くのプロセスタイプがあります。「走り、ゾンビ、空中浮揚…」したがって、特定の種類のレポートを一覧表示/検索/表示するには -「走る」カテゴリ - 理想的にはrオプションを使用して検索する必要があります。

たとえば、Maven / Gradleコマンドを実行して複数のオプションを含む複数のモジュールをビルド/テストする場合は、25分かかり、端末ウィンドウにはまだプロセス自体の行がたくさん表示されます。どのコマンドが実行され(まだ実行されているか)、どのオプション/パラメータが使用されたか -rオプションを使用する正しい方法であるとします。これがオプションの目的ですr。そうですか?

答え1

このrオプションは、実際に実行中のプロセスのみを表示します。睡眠は走っていませんが、期待通りに寝ています。プログラムはデフォルトで入力を解析し、呼び出しを実行しますsleep()。それがすべてです。フォアグラウンドプログラムと睡眠プログラムには違いがあります。フォアグラウンドとバックグラウンドの状態は、主にCPUを消費するかどうかではなく、シェル内の場所に関するものです。

ほとんどの場合、プロセスは実際にはあまり実行されません。 top を実行してSフィールドを見ると、%CPUほとんどのプロセスが S 状態で CPU 時間が少し使用されていることがわかります。

psrオプションは状態を持つプロセスのみを意味すると予想できますが、R何らかの理由でステートフルプロセスD(中断なしで待機)も含まれます。少なくとも1999年からそうでしたが、理由はわかりません。

このフラグは、ランアウェイプロセスを見つけるために使用される可能性が高くなります。ここps rで複数回実行すると、常に同じプロセスが表示されます。これは明確な質問ではありませんが、プロセスが実行され続ける理由を尋ねたい場合があります。

プロセスを実行するときは、プロセスの正しい状態であることを覚えておいてください(プロセスの状態を確認するpsとより正確です)。 10秒ごとに実行し、プロセスが実行した瞬間を除いて9.99秒間CPUに影響を与えるps場合、そのプロセスは実行中のプロセスではありません。pspsps

時間ごとに窓の外を見て、隣人に訪問者がいることを確認するのと同じです。誰かを捕まえるかもしれませんが、可能性は希薄です。

ほぼ常に実行したくないps実行状態を選択します。 CPUの大部分を占めるものが何であるかを知りたい場合は、topアイドル状態をオンにすると(iを押す)、必要なものが何であるかがわかります。このタイプの選択は、「最後のリフレッシュ後にCPU使用率データが変更されましたか?」と尋ねられます。

関連情報