it-swarm.cn

为什么“ 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=1,可以通过按K进行切换,但默认情况下为1。)

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

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

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

279

对我而言,在当前或多或少的Arch Linux系统上,ps xf仅显示我的用户ID拥有的进程。 htop显示了所有过程。尝试ps -ef获取所有进程的列表,或者ps -ejH以获得孩子/父母关系列表。

1
Bruce Ediger

htop还显示已结束的进程。这很棒,因此您可以查看短暂的进程以及它们可能消耗了哪些资源。如果退出htop并重新启动它,您会看到它们已消失。我无法找出一种方法来使htop放弃历史进程而无需重新启动,所以也许有一种方法。

0
MikeB