在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显示的进程比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 在不重新启动的情况下删除历史进程,所以也许有一种方法。