htop, top et btop : quelle différence pour surveiller une machine Debian

apt install htop btop suffit, top est déjà installé
Sur Debian 13 (trixie), sudo apt install htop btop ajoute les deux moniteurs qui manquent, puisque top appartient au paquet procps livré avec le système. Le service madison de la ftp-master Debian relève procps 2:4.0.4-9, htop 3.4.1-5 et btop 1.3.2-0.1 dans cette suite, contre 2:4.0.2-3, 3.2.2-2 et 1.2.13-1 dans Debian 12 (bookworm). btop ne figure dans aucune suite antérieure à bookworm, ce qui le rend absent de Debian 11.
Sommaire
- apt install htop btop suffit, top est déjà installé
- Quelle différence entre htop, top et btop ?
- L’intervalle par défaut vaut 1,5 seconde dans top et htop, 2 secondes dans btop
- Ce qui casse : btop sans terminal, htop sans sortie propre
- top écrit un relevé texte, htop et btop non
- Un service en échec laisse sa trace dans le journal systemd
- GPLv2+ pour htop, Apache 2.0 pour btop, et rien à payer pour les trois
- Sources
Vérifier les numéros installés demande de connaître la bonne option, car la forme courte change selon l’outil. Les trois pages de manuel documentent --version, et sudo apt install tire ces binaires des dépôts APT de Debian plutôt que d’un site tiers. La distinction entre htop, top et btop tient au fichier de configuration et à la sortie texte.
sudo apt install htop btop
top --version
htop --version
btop --version
Quelle différence entre htop, top et btop ?
Les trois lisent les fichiers de /proc et affichent les mêmes compteurs. top reste le seul à produire une sortie texte, htop se distingue par le tri et l’envoi de signaux au clavier, btop par ses graphes de disque et de réseau. La décision se joue sur l’usage visé, le mode batch ou l’intervalle choisi.
Le tableau ci-dessous compare les valeurs établies d’après les pages de manuel, le dépôt procps-ng et le dépôt btop, pour Debian 13 (trixie) et Debian 12 (bookworm). Les numéros de paquets viennent du service madison de la ftp-master Debian. Deux lignes séparent les usages : le mode batch, documenté pour top seul, et l’intervalle par défaut, fixé à 2 secondes dans btop.
| Critère mesuré | top | htop | btop |
|---|---|---|---|
| Version dans Debian 13 (trixie) | procps 2:4.0.4-9 | htop 3.4.1-5 | btop 1.3.2-0.1 |
| Version dans Debian 12 (bookworm) | procps 2:4.0.2-3 | htop 3.2.2-2 | btop 1.2.13-1 |
| Intervalle d’affichage par défaut | 1,5 seconde | 1,5 seconde | 2000 ms |
| Réglage de l’intervalle | option -d en secondes, décimales acceptées | option -d en dixièmes, bornée de 1 à 100 | clé update_ms, minimum 100 ms |
| Fichier de configuration | ~/.config/procps/toprc, écrit par la touche W | ~/.config/htop/htoprc, écrasé à la sortie propre | ~/.config/btop/btop.conf, généré s’il manque |
| Unités mémoire | kibioctets par défaut, échelle avec les touches E et e | puissances de 1024 en unités IEC | base 1024, base_10_sizes à false |
| Mode batch documenté | oui, options -b et -n | non | non |
| Suivi GPU sous Linux | non | non | depuis btop 1.3.0 (7 janvier 2024) |
L’intervalle par défaut vaut 1,5 seconde dans top et htop, 2 secondes dans btop
Le fichier top.h du dépôt procps-ng définit DEF_DELAY à 1,5 seconde, et le fichier Settings.h du dépôt htop fixe DEFAULT_DELAY à 15 dixièmes de seconde, soit la même durée. Le délai de 3 secondes répété par les anciens documents ne revient qu’avec l’option de compilation –disable-modern-top, décrite dans le configure.ac de procps-ng. btop part de plus haut avec update_ms = 2000, valeur écrite dans le btop.conf généré au premier lancement.
Rien de tout cela ne se règle de la même façon. top accepte les secondes décimales avec l’option -d et avec la touche d, et une valeur de 0 provoque un rafraîchissement quasi continu que sa page de manuel qualifie d’inconfortable. htop compte en dixièmes et ramène toute valeur sous 1 à 1 et toute valeur au-dessus de 100 à 100. btop passe par la clé update_ms, refusée sous 100 ms.
top -d 0.5
htop -d 20
grep update_ms ~/.config/btop/btop.conf
Ce qui casse : btop sans terminal, htop sans sortie propre
Rediriger la sortie de btop vers un fichier, l’envoyer dans une tâche cron ou le placer derrière un tube l’arrête immédiatement, car le programme teste la présence d’un terminal avant de dessiner. Le message part sur la sortie d’erreur, sans écran intermédiaire, et le code de retour signale l’échec aux scripts qui l’appellent.
ERROR: No tty detected!
btop++ needs an interactive shell to run.
Pour un relevé automatique, aucune de ces trois commandes ne convient mieux que top -b, qui écrit du texte sans terminal ; htop ne documente pas d’équivalent. La deuxième panne connue touche htop, qui n’écrit son fichier de configuration qu’à la fermeture propre selon sa page de manuel. Quittez avec F10 ou q : un kill depuis un autre terminal, ou la fermeture brutale de la session, laisse les réglages précédents en place.
Le fichier htoprc lui-même n’a pas à être modifié à la main. htop le réécrit à chaque sortie propre depuis son écran de configuration, et la page de manuel déconseille l’édition directe.
top écrit un relevé texte, htop et btop non
top -b lance le mode batch, qui n’accepte plus aucune touche et s’arrête après le nombre d’itérations fixé par -n ou sur un signal, comme le décrit sa page de manuel. La largeur de la sortie y est plafonnée à 512 colonnes, et l’option -w permet de la réduire ou de l’étendre dans cette limite. htop et btop n’ont rien de tel : leurs pages de manuel ne décrivent que l’affichage interactif.
Ces relevés gardent une trace horodatée d’une machine distante, et le fichier produit s’ouvre avec n’importe quel outil de recherche de texte. Une restriction peu connue encadre pourtant ce que top autorise. Un fichier /etc/toprc de deux lignes, décrit dans sa page de manuel, active le mode sécurisé et retire aux utilisateurs ordinaires le droit de changer le délai, de renice ou de tuer un processus.
top -b -n 5 -d 1 > releve.txt
top -b -n 1 -p 1234
s
5.0
Un service en échec laisse sa trace dans le journal systemd
Quand une unité systemd tombe, les trois moniteurs montrent un processus disparu ou un code de sortie, sans le nom de l’unité ni la ligne fautive. Le journal du service conserve ces éléments, et lire les journaux systemd évite de chercher un processus déjà mort. La commande journalctl -u nom.service affiche les messages de l’unité avec leur horodatage, ce qu’un moniteur de processus ne peut pas reconstituer.
Les droits expliquent l’autre limite de la journée. htop remplit sa colonne EXE pour les processus des autres comptes seulement s’il dispose de root ou de la capacité CAP_SYS_PTRACE, précise sa page de manuel ; sans cela, la colonne affiche un tiret. btop demande une étape de plus, make setcap, pour envoyer des signaux sans sudo et éviter les refus de lecture dans /proc, d’après son dépôt. Ce partage des droits entre comptes est détaillé dans la lecture des processus des autres comptes.
GPLv2+ pour htop, Apache 2.0 pour btop, et rien à payer pour les trois
Faut-il acheter une licence pour htop, top ou btop ?
Aucun des trois n’est payant. htop est distribué sous GPLv2+ et btop sous Apache 2.0, comme l’indiquent la page de manuel htop et le dépôt btop. Les trois paquets figurent dans l’archive Debian, sans dépôt tiers à ajouter, et l’installation sur un parc entier ne déclenche donc aucun achat.
btop ou htop pour suivre les disques et le réseau ?
btop affiche des graphes pour la mémoire, les disques et le réseau, résumés dès la première ligne de sa page de manuel. htop reste le bon choix pour attribuer une activité disque à un processus précis, avec ses colonnes de débit de lecture et d’écriture par processus. Les deux se complètent sur une machine unique.
Comment ralentir top sans quitter la fenêtre ?
La touche d ouvre la saisie du délai en secondes, et les décimales y sont acceptées ; la touche s produit le même effet. La page de manuel de top précise qu’une valeur de 0 rafraîchit presque en continu et que la modification est refusée en mode sécurisé, sauf pour root. La valeur en cours s’affiche sur la deuxième ligne de l’écran d’aide.
Pourquoi htop oublie-t-il mes colonnes après un kill ?
Son fichier de configuration n’est réécrit qu’à la fermeture propre, et l’envoi de n’importe quel signal fait perdre les changements, d’après la page de manuel htop. Quittez avec F10 ou q. Un kill lancé depuis un autre terminal laisse l’ancien fichier intact et les nouveaux réglages disparaissent.
Comment surveiller un seul processus sans ouvrir une interface ?
top -b -n 1 -p 1234 imprime un instantané du processus visé, et le nombre qui suit -n règle la quantité de relevés avant l’arrêt. Sa page de manuel limite cette option à 20 identifiants, fournis en liste séparée par des virgules ou par plusieurs occurrences de -p.