オプションの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
場合、そのプロセスは実行中のプロセスではありません。ps
ps
ps
時間ごとに窓の外を見て、隣人に訪問者がいることを確認するのと同じです。誰かを捕まえるかもしれませんが、可能性は希薄です。
ほぼ常に実行したくないps
実行状態を選択します。 CPUの大部分を占めるものが何であるかを知りたい場合は、top
アイドル状態をオンにすると(iを押す)、必要なものが何であるかがわかります。このタイプの選択は、「最後のリフレッシュ後にCPU使用率データが変更されましたか?」と尋ねられます。