web-dev-qa-db-fra.com

Pourquoi `htop` affiche plus de processus que` ps`

Dans 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                                        

Dans htop, il apparaît comme: htop showing multiple Unicorn_Rails lines

Pourquoi htop montre-t-il plus de processus que ps?

195
Cheng

Par défaut, htop répertorie chaque thread d'un processus séparément, contrairement à ps. Pour désactiver l'affichage des threads, appuyez sur H, ou utilisez le menu "Configuration/Options d'affichage", "Masquer les threads utilisateur". Cela met la ligne suivante dans votre ~/.htoprc ou ~/.config/htop/htoprc (vous pouvez également le mettre manuellement):

hide_userland_threads=1

(Aussi hide_kernel_threads=1, basculé en appuyant sur K, mais c'est 1 par défaut.)

Une autre option utile est "Afficher les fils dans une couleur différente" dans le même menu (highlight_threads=1 dans .htoprc), ce qui entraîne l'affichage des fils dans une couleur différente (vert dans le thème par défaut).

Dans la première ligne de l'affichage htop, il y a une ligne comme "Tâches: 377, 842 thr, 161 kthr; 2 en cours d'exécution ”. Cela montre le nombre total de processus, de threads utilisateur, de threads du noyau et de threads dans un état exécutable. Les nombres ne changent pas lorsque vous filtrez l'affichage, mais les indications "thr" et "kthr" disparaissent lorsque vous désactivez l'inclusion des threads utilisateur/noyau respectivement.

Lorsque vous voyez plusieurs processus qui ont toutes les caractéristiques en commun, à l'exception des champs PID et liés au processeur (Nice value, CPU%, TIME +, ...), il est fort probable qu'ils soient des threads dans le même processus.

Pour moi, sur un système Arch Linux plus ou moins actuel, ps xf ne me montre que les processus appartenant à mon ID utilisateur. htop me montre tous les processus. Essayez ps -ef pour une liste de tous les processus, ou peut-être ps -ejH pour obtenir une liste des relations enfant/parent.

1
Bruce Ediger

htop montre également des processus terminés. C'est formidable, vous pouvez donc voir les processus de courte durée et les ressources qu'ils auraient pu consommer. Si vous quittez htop et le redémarrez, vous verrez qu'ils ont disparu. Je ne peux pas trouver un moyen de faire en sorte que htop supprime les processus historiques sans redémarrer, alors il y a peut-être un moyen.

0
MikeB