it-swarm-ru.tech

Почему `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 value, CPU%, TIME +, ...), весьма вероятно, что они являются потоками в одном и том же процессе.

279
Gilles 'SO- stop being evil'

Для меня в более или менее современной системе Arch Linux ps xf показывает мне только процессы, принадлежащие моему идентификатору пользователя. htop показывает мне все процессы. Пытаться ps -ef для получения списка всех процессов или, возможно, ps -ejH чтобы получить список дочерних/родительских отношений.

1
Bruce Ediger

htop также показывает процессы, которые закончились. Это здорово, так что вы можете увидеть недолговечные процессы и то, какие ресурсы они могли бы использовать. Если вы выйдете из htop и перезапустите его, вы увидите, что они исчезли. Я не могу найти способ заставить htop отбрасывать исторические процессы без перезапуска, так что, возможно, есть способ.

0
MikeB