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

为什么“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 显示多条 unicorn_rails 行

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

答案1

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

hide_userland_threads=1

(也可以hide_kernel_threads=1通过按 进行切换K,但默认情况下为 1。)

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

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

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

答案2

对我来说,在当前的 arch Linux 系统上,ps xf只显示我的用户 ID 拥有的进程。 htop显示所有流程。尝试ps -ef获取所有进程的列表,或者ps -ejH获取子/父关系列表。

答案3

htop 还显示已结束的进程。这很棒,因此您可以看到短暂的进程以及它们可能消耗了哪些资源。如果你退出 htop 并重新启动它,你会看到它们已经消失了。我想不出一种方法可以让 htop 在不重新启动的情况下删除历史进程,所以也许有一种方法。

相关内容