Quand un processus inconnu consomme du CPU, qu'un port est déjà pris ou
qu'un service revient sans cesse, la vraie question n'est pas quoi, mais
pourquoi. Les outils classiques (ps, top, lsof, ss, systemctl,
docker ps) montrent l'état, et vous laissent corréler à la main. witr
(Why Is This Running) répond directement : il trace l'ancêtre d'un
processus et reconstitue la chaîne qui l'a fait exister (systemd, service,
conteneur, shell). Ce guide montre comment l'installer et l'utiliser pour
diagnostiquer vite. Les sorties reproduites viennent de witr 0.3.3, la
dernière version publiée, exécuté sur Debian 13, Ubuntu 24.04 et AlmaLinux 10.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Installer witr sur Linux (binaire, paquet, gestionnaire)
- Tracer l'origine d'un processus par nom, PID, port, fichier ou conteneur
- Lire la chaîne d'ancêtres (Why It Exists) et les avertissements
- Diagnostiquer un port occupé ou un processus mystérieux en une commande
Pourquoi witr plutôt que ps et lsof
Section intitulée « Pourquoi witr plutôt que ps et lsof »ps et lsof exposent l'état : un PID, une commande, un port. Mais ils ne
disent pas d'où vient le processus. witr corrèle ces couches à votre place et
affiche la lignée : qui a lancé quoi, via quel service ou quel
conteneur, jusqu'à systemd.
| Question | Outil classique | witr |
|---|---|---|
| Quel PID, quelle commande ? | ps, top | oui |
| Quel processus tient ce port ? | ss -tlnp, lsof -i | witr --port |
| Pourquoi ce processus existe ? | corrélation manuelle | chaîne d'ancêtres |
| Quel service systemd le gère ? | systemctl status | affiché directement |
Installer witr
Section intitulée « Installer witr »witr est un binaire Go statique (Linux, macOS, FreeBSD, Windows). La
méthode la plus sûre consiste à télécharger le binaire de la release et à
vérifier son empreinte contre le fichier SHA256SUMS publié à côté, plutôt
que d'exécuter un script d'installation.
VERSION=0.3.3curl -fsSLO "https://github.com/pranshuparmar/witr/releases/download/v${VERSION}/witr-linux-amd64"curl -fsSLO "https://github.com/pranshuparmar/witr/releases/download/v${VERSION}/SHA256SUMS"grep ' witr-linux-amd64$' SHA256SUMS | sha256sum -c -sudo install -m 755 witr-linux-amd64 /usr/local/bin/witrLa commande sha256sum -c doit répondre witr-linux-amd64: OK avant
l'installation (vérifié sur les trois distributions). Un binaire arm64 est
publié sous le même schéma de nom.
# Debian/Ubuntu : récupérer le .deb de la release puissudo apt install ./witr-0.3.3-linux-amd64.deb
# RHEL/AlmaLinux/Rockysudo dnf install ./witr-0.3.3-linux-amd64.rpmUbuntu 26.04 et Debian sid empaquettent aussi witr (sudo apt install witr), mais avec retard : mesuré le 2026-09-30, sid propose la 0.3.1 et
Ubuntu 26.04 la 0.2.4. Debian 13 ne l'a pas.
brew install witr # macOS / Linuxbrew# également : conda, aur, winget, ports...Vérifiez l'installation :
witr --versionwitr v0.3.3 (commit 86831e80c59c54e19c74cdbd126ed7ff6bcad756, built 2026-06-24T06:47:19Z)Premier diagnostic
Section intitulée « Premier diagnostic »Interrogez un processus par son nom. Si plusieurs correspondent, witr liste
les candidats avec leur PID, ici deux sleep lancés depuis un shell :
witr sleepMultiple matching processes found:
[1] sleep (pid 3156) sleep 601[2] sleep (pid 3157) sleep 602
Re-run with: witr --pid <pid>Ciblez alors le PID voulu. La sortie ci-dessous est celle d'un sleep 600
lancé depuis le shell d'un conteneur Debian 13, relevée telle quelle :
witr --pid 3682Target : sleep
Process : sleep (pid 3682)User : rootCommand : sleep 600Started : just now (Wed 2026-09-30 02:49:38 +00:00)
Why It Exists : bash (pid 1) → sleep (pid 3682)
Source : bash (shell)
Working Dir : /tmp
Warnings : • Process is running as root • Process is running from a suspicious working directory: /tmpLa section Why It Exists donne la chaîne d'ancêtres, et Source
dit ce qui porte le processus : ici un shell. Sur un serveur, un démon
lancé par systemd remonte jusqu'à systemd (pid 1), et witr ajoute alors le
service et son unit file (le README du projet documente la ligne
Unit File pour Linux). Les Warnings signalent des points de vigilance :
exécution en root, répertoire de travail inhabituel.
Cibler par port, fichier ou conteneur
Section intitulée « Cibler par port, fichier ou conteneur »witr ne se limite pas aux noms de processus. Les drapeaux couvrent les questions de diagnostic les plus fréquentes :
# Quel processus écoute sur le port 5432 ?witr --port 5432
# Quel processus tient ce fichier ouvert (verrou) ?witr --file /var/lib/dpkg/lock
# D'où vient ce conteneur ?witr --container redis
# Correspondance exacte (pas de recherche floue)witr nginx --exact
# Lignée en arbre, ou en une seule ligne pour un scriptwitr --tree --port 8080witr --short --port 8080witr --port remplace à lui seul le réflexe ss -tlnp | grep suivi d'un
systemctl status, et remonte en plus la lignée du processus trouvé. Mesuré
avec un nc -l -p 8080, la sortie ajoute une ligne Sockets : 0.0.0.0:8080 (TCP | LISTENING), et --short réduit tout à bash (pid 1) → nc (pid 3165).
L'option --file trouve aussi un descripteur hérité : un fichier ouvert par
un shell puis passé à la commande qu'il a lancée est attribué à cette commande.
Cas d'usage : un port déjà pris
Section intitulée « Cas d'usage : un port déjà pris »Le scénario classique : un service refuse de démarrer car son port est occupé.
Plutôt que d'enchaîner ss, lsof et systemctl, une commande suffit :
witr --port 8080witr identifie le processus, et indique s'il provient d'un service systemd, d'un conteneur Docker ou d'un shell, vous évitant de tuer aveuglément un PID dont vous ignorez la provenance.
À retenir
Section intitulée « À retenir »- witr répond au pourquoi un processus tourne, pas seulement au quoi
- Il trace la chaîne d'ancêtres (
Why It Exists) jusqu'àsystemd, et pointe l'unit file - Cibles : nom,
--pid,--port,--file,--container - Les
Warningsajoutent une lecture sécurité (root, working dir suspect) - Binaire Go unique, à installer de préférence depuis la release en vérifiant
SHA256SUMS; les paquets de distribution ont une ou plusieurs versions de retard - Idéal pour diagnostiquer vite un port occupé ou un processus mystérieux
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Limiter les ressources (ulimit, systemd)
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications