web-dev-qa-db-ja.com

`htop`が` ps`よりも多くのプロセスを表示するのはなぜですか

ps xf

26395 pts/78   Ss     0:00  \_ bash
27016 pts/78   Sl+    0:04  |   \_ Unicorn_Rails master -c config/Unicorn.rb                                           
27042 pts/78   Sl+    0:00  |       \_ Unicorn_Rails worker[0] -c config/Unicorn.rb                                        

htopでは、次のように表示されます。 htop showing multiple Unicorn_Rails lines

Htopがpsより多くのプロセスを表示するのはなぜですか?

195
Cheng

デフォルトでは、htopはプロセスの各スレッドを個別にリストしますが、psはリストしません。スレッドの表示をオフにするには、Hを押すか、[設定/表示オプション]メニューの[ユーザーランドスレッドを非表示]を使用します。これにより、次の行が~/.htoprcまたは~/.config/htop/htoprc(手動で配置することもできます):

hide_userland_threads=1

(またhide_kernel_threads=1Kを押すことで切り替えられますが、デフォルトでは1です)。

別の便利なオプションは、同じメニューの「スレッドを別の色で表示する」(highlight_threads=1 in .htoprc)、スレッドを別の色(デフォルトのテーマでは緑)で表示します。

htop表示の1行目には、「タスク:377、842 thr、161 kthr; 2実行中」。これは、プロセス、ユーザーランドスレッド、カーネルスレッド、および実行可能な状態のスレッドの総数を示します。表示をフィルタリングしても数値は変化しませんが、ユーザー/カーネルスレッドの組み込みをそれぞれオフにすると、「thr」と「kthr」の表示が消えます。

PIDとCPU関連のフィールド(Nice値、CPU%、TIME +など)を除くすべての特性が共通する複数のプロセスが表示される場合、それらは同じプロセス内のスレッドである可能性が高いです。

私にとって、多かれ少なかれ現在のArch Linuxシステムでは、ps xfはユーザーIDが所有するプロセスのみを表示します。 htopはすべてのプロセスを表示します。すべてのプロセスのリストについてはps -efを試してください。または、子/親関係のリストを取得するにはps -ejHを試してください。

1
Bruce Ediger

htopは、終了したプロセスも示しています。これはすばらしいので、短期間のプロセスと、それらが消費した可能性のあるリソースを確認できます。 htopを終了して再起動すると、それらが消えていることがわかります。再起動せずにhtopに履歴プロセスをドロップさせる方法がわからないので、方法があるかもしれません。

0
MikeB