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.
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).
curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bashInstalle le binaire dans /usr/local/bin/witr et la page de manuel.
# Debian/Ubuntu : récupérer le .deb de la release puissudo dpkg -i witr-*-linux-amd64.deb
# RHEL/AlmaLinux/Rockysudo rpm -i witr-*-linux-amd64.rpmSur Ubuntu 26.04+ et Debian sid, witr est aussi dans les dépôts :
sudo apt install witr.
brew install witr # macOS / Linuxbrew# également : conda, aur, winget, ports...Vérifiez l'installation :
witr --versionwitr v0.3.3Premier diagnostic
Section intitulée « Premier diagnostic »Interrogez un processus par son nom. Si plusieurs correspondent, witr liste les candidats avec leur PID :
witr auditdMultiple matching processes found:
[1] kauditd (pid 22)[2] auditd (pid 1096) /sbin/auditd
Re-run with: witr --pid <pid>Ciblez alors le PID voulu :
witr --pid 1096Process : auditd (pid 1096)User : rootService : auditd.serviceCommand : /sbin/auditdStarted : 10 hours ago
Why It Exists : systemd (pid 1) → auditd (pid 1096)
Source : auditd.service (systemd)Description : Security Auditing ServiceUnit File : /lib/systemd/system/auditd.service
Warnings : • Process is running as root • Process is running from a suspicious working directory: /La section Why It Exists donne la chaîne d'ancêtres, et Unit File
pointe directement le fichier systemd responsable. 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 --exactwitr --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é.
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, installable par script, paquet (.deb/.rpm) ou gestionnaire
- Idéal pour diagnostiquer vite un port occupé ou un processus mystérieux