- Witr (why-is-this-running) ist ein Tool, das auf Linux-Systemen klar zeigt, warum ein bestimmter Prozess, Dienst oder Port aktiv ist
- Im Gegensatz zu bestehenden Tools wie
ps, top oder lsof, die nur zeigen, „was läuft“, stellt es die Kausalzusammenhänge hinter dem „warum es läuft“ auf einem Bildschirm dar
- Durch PID-basierte Analyse verfolgt es Ursprung, Startpfad, Fortbestand und Kontext eines Prozesses
- Es erklärt die Ausführungsursache in Verbindung mit verschiedenen Quellen wie systemd, docker, pm2, cron, shell und arbeitet read-only und nicht destruktiv
- Ein Tool, das beim Debugging und bei der Störungsbehebung die Zeit bis zum Verständnis verkürzt und die Laufzeitstruktur komplexer Systeme auf einen Blick erfassbar macht
Zweck und Konzept
- Die Kernfrage von Witr lautet: „Warum läuft das hier? (why-is-this-running)“
- Es verfolgt Ursprung und Ursache aller laufenden Elemente wie Prozesse, Dienste und Ports
- Es zeigt indirekte Ausführungsursachen über mehrere Ebenen hinweg (Supervisor, Container, Service, Shell usw.) explizit an
- Während bestehende Tools nur Status und Metadaten liefern, stellt Witr Kausalbeziehungen klar dar
- Dadurch wird in einer für Menschen gut lesbaren Form ausgegeben, was läuft, wie es gestartet wurde, warum es läuft und in welchem Kontext
Hauptziele
- Den Grund für die Existenz eines Prozesses erklären und mehr Informationen liefern als nur die reine Laufzeit
- Debugging- und Incident-Response-Zeit verkürzen
- Sofort ohne Konfiguration nutzbar, read-only und sicher
- Klarheit vor Vollständigkeit
- Keine Monitoring-, Performance-Analyse- oder Auto-Recovery-Funktionen enthalten
Funktionsweise
- Alle Ziele werden prozesszentriert über die PID interpretiert
- Ports, Dienste, Container und Befehle werden alle mit einer PID verknüpft
- Auf Basis der PID wird eine causal chain der Ausführung aufgebaut
- Vier Kernfragen
- Was läuft?
- Wie wurde es gestartet?
- Was hält es am Laufen?
- Zu welchem Kontext gehört es?
Unterstützte Ziele
- Unterstützt Prozess-/Dienstnamen, PID und Portnummern als Eingaben
- Wenn bei einer Namenseingabe mehrere Prozesse passen, wird zur Auswahl einer PID aufgefordert
- Mit den Optionen
--pid und --port ist eine Analyse eines bestimmten Prozesses oder Ports möglich
Ausgabestruktur
- Target: das vom Benutzer angegebene Ziel
- Process: ausführbare Datei, PID, Benutzer, Befehl, Startzeit, Anzahl der Neustarts
- Why It Exists: die Ancestry Chain des Prozesses
- Source: das zentrale System, das die Ausführung verantwortet (z. B. systemd, docker, pm2, cron oder shell)
- Context: Arbeitsverzeichnis, Git-Repository, Docker-Container, Bind-Informationen usw.
- Warnings: nicht blockierende Warnungen wie Ausführung mit Root-Rechten, Lauschen auf öffentlichen Interfaces, lange Laufzeit oder übermäßiger Speicherverbrauch
Kommandozeilenoptionen
--pid, --port: Analyse einer bestimmten PID oder eines bestimmten Ports
--short: einzeilige Zusammenfassung
--tree: vollständigen Prozessbaum anzeigen
--json: Ausgabe im JSON-Format
--warnings: nur Warnungen anzeigen
--no-color: Farben deaktivieren
--env: nur Umgebungsvariablen anzeigen
--help: Hilfe anzeigen
Installation und Entfernung
- Wird als einzelne statische Linux-Binärdatei verteilt
- Installation per Skript (empfohlen)
- Manuelle Installation
- Binärdateien für
amd64 und arm64 direkt herunterladen und Prüfsumme verifizieren
- Ausführungsrechte setzen und in den PATH verschieben
- Verifikation und Entfernung
- Mit
witr --version und man witr prüfen
- Kann mit
sudo rm -f /usr/local/bin/witr entfernt werden
- Nix-Flake-Unterstützung: Ausführung möglich mit
nix run github:pranshuparmar/witr -- --port 5000
Plattform und Berechtigungen
- Nur für Linux
- Informationen werden über Zugriff auf
/proc gesammelt
- Für einige Prozessinformationen sind sudo-Rechte erforderlich
Noch keine Kommentare.