38 points par GN⁺ 2025-12-27 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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
    1. Qu’est-ce qui est en cours d’exécution ?
    2. Comment cela a-t-il été démarré ?
    3. Qu’est-ce qui le maintient en vie ?
    4. À 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.

Aucun commentaire pour le moment.