- Witr (why-is-this-running) est un outil qui montre clairement pourquoi un processus, un service ou un port donné est en cours d’exécution sur un système Linux
- Contrairement à
ps, top, lsof et autres, qui montrent simplement « ce qui s’exécute », il affiche sur un seul écran la relation de causalité derrière le “pourquoi c’est en cours d’exécution”
- Grâce à une analyse basée sur le PID, il suit l’origine du processus, son chemin d’exécution, la raison pour laquelle il est maintenu en vie et son contexte d’appartenance
- Il explique la cause de l’exécution en s’intégrant à diverses sources comme systemd, docker, pm2, cron, shell, tout en fonctionnant en lecture seule et de manière non destructive
- C’est un outil qui réduit le temps nécessaire à la compréhension lors du débogage et de la gestion d’incidents, et permet de saisir d’un coup d’œil la structure d’exécution de systèmes complexes
Objectif et concept
- La question centrale de Witr est : « Pourquoi cela est-il en cours d’exécution ? (why-is-this-running) »
- Il remonte l’origine et la cause de tous les éléments en cours d’exécution, qu’il s’agisse de processus, services ou ports
- Il montre explicitement les causes d’exécution indirectes à travers plusieurs couches (superviseur, conteneur, service, shell, etc.)
- Alors que les outils existants ne fournissent que l’état et les métadonnées, Witr exprime clairement les relations de causalité
- Au final, il affiche sous une forme facile à lire pour un humain « ce qui s’exécute, comment, pourquoi et dans quel contexte »
Principaux objectifs
- Expliquer la raison d’être d’un processus et fournir des informations au-delà de son simple état d’exécution
- Réduire le temps de débogage et de gestion des incidents
- Utilisable immédiatement sans configuration, avec garantie de sécurité en lecture seule
- Donner la priorité à la clarté plutôt qu’à l’exhaustivité
- N’inclut pas de fonctions de supervision, d’analyse de performance ni d’auto-récupération
Principe de fonctionnement
- Tous les éléments sont interprétés avec le processus (PID) comme point central
- Ports, services, conteneurs et commandes sont tous reliés à un PID
- À partir du PID, il construit une chaîne de causalité d’exécution (causal chain)
- Quatre questions clés
- Qu’est-ce qui est en cours d’exécution ?
- Comment cela a-t-il été démarré ?
- Qu’est-ce qui le maintient en vie ?
- À quel contexte cela appartient-il ?
Éléments pris en charge
- Prend en charge comme cibles d’entrée les noms de processus/service, les PID et les numéros de port
- Si plusieurs processus correspondent à un nom saisi, il demande de choisir un PID
- Les options
--pid et --port permettent une analyse ciblée sur un processus ou un port précis
Structure de sortie
- Target : la cible spécifiée par l’utilisateur
- Process : exécutable, PID, utilisateur, commande, heure de démarrage, nombre de redémarrages
- Why It Exists : la chaîne d’ascendance causale (ancestry chain) du processus
- Source : le système principal responsable de l’exécution (par ex. systemd, docker, pm2, cron ou shell)
- Context : répertoire de travail, dépôt Git, conteneur Docker, informations de binding, etc.
- Warnings : avertissements non bloquants comme exécution avec les droits root, écoute sur une interface publique, exécution de longue durée, usage mémoire excessif, etc.
Options de ligne de commande
--pid, --port : analyser un PID ou un port spécifique
--short : résumé sur une ligne
--tree : afficher l’arbre complet des processus
--json : sortie au format JSON
--warnings : afficher uniquement les avertissements
--no-color : désactiver les couleurs
--env : afficher uniquement les variables d’environnement
--help : afficher l’aide
Installation et suppression
- Distribué sous la forme d’un binaire Linux statique unique
- Installation par script (recommandée)
- Installation manuelle
- Téléchargement direct des binaires pour
amd64 et arm64, avec vérification du checksum
- Après attribution des droits d’exécution, déplacement dans le PATH
- Vérification et suppression
- Vérification avec
witr --version et man witr
- Suppression possible via
sudo rm -f /usr/local/bin/witr
- Prise en charge de Nix Flake : exécution possible avec
nix run github:pranshuparmar/witr -- --port 5000
Plateforme et permissions
- Linux uniquement
- Collecte des informations via l’accès à
/proc
- La consultation de certaines informations sur les processus nécessite des droits sudo
Aucun commentaire pour le moment.