为什么`htop`比`ps`显示更多进程

Che*_*eng 231 process top ps thread htop

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                                        
Run Code Online (Sandbox Code Playgroud)

在 中htop,它显示为: htop 显示多条 unicorn_rails 行

为什么 htop 显示的进程比 ps 多?

Gil*_*il' 325

默认情况下,htop单独列出进程的每个线程,而ps不会。要关闭线程的显示,请按H,或使用“设置/显示选项”菜单中的“隐藏用户线程”。这会将以下行放在您的~/.htoprcor 中~/.config/htop/htoprc(您也可以手动将其放在那里):

hide_userland_threads=1
Run Code Online (Sandbox Code Playgroud)

(另外hide_kernel_threads=1,按 切换K,但默认为 1。)

另一个有用的选项是同一菜单 ( highlight_threads=1in .htoprc)中的“以不同颜色显示线程” ,这会导致线程以不同颜色显示(默认主题中为绿色)。

htop显示屏的第一行,有一行类似于“任务:377、842 thr、161 kthr;2 运行”。这显示了进程、用户态线程、内核线程和处于可运行状态的线程的总数。当您过滤显示时,数字不会改变,但是当您分别关闭用户/内核线程的包含时,指示“thr”和“kthr”就会消失。

当您看到多个进程除了 PID 和 CPU 相关字段(NIce 值、CPU%、TIME+ 等)之外,所有特征都具有共同特征时,它们很可能是同一进程中的线程。

  • 关于为什么这是默认设置的任何线索?为什么这是相关的?这似乎增加了噪音,但我想有一个很好的理由。 (4认同)
  • @tuxayo 我也很好奇,发现这个:https://github.com/htop-dev/htop/issues/99#issuecomment-748142128 tl;dr 这是一种哲学选择。 (2认同)