Overview
witr is a powerful command-line utility designed to answer the fundamental question: "Why is this running?" It cuts through the complexity of system processes and services to reveal the causal chain behind any running executable, service, or port. Unlike traditional tools that show what is running, witr explicitly explains how and why it got there, tracing its origins through supervisors, containers, services, and shells.
Key Features
- Causal Chain Discovery: Visually reconstructs the exact lineage of any running process, illustrating its parentage and the systems responsible for its execution.
- Interactive TUI Mode: Offers a dynamic, terminal-based dashboard for real-time monitoring of processes and open ports. Navigate, filter, and inspect with ease.
- Comprehensive Process Insights: Provides detailed information including command arguments, user, start time, working directory, Git repository context, and listening network ports.
- Versatile Querying: Supports finding processes by name (exact or fuzzy), PID, listening port, or even by a file path they have open.
- Cross-Platform Support: Available for Linux, macOS, FreeBSD, and Windows, with numerous installation options including native packages and popular package managers.
- Actionable Information: Beyond just showing data,
witrcan highlight issues and provide context for debugging and system understanding.
Typical Use Cases
- Debugging Unexpected Processes: Quickly identify the origin of unfamiliar processes consuming resources or causing system instability.
- Understanding Service Orchestration: Unravel the startup sequence of complex applications managed by
systemd,pm2, Docker, or other orchestration tools. - Investigating Network Port Conflicts: Determine precisely which process is bound to a specific port and its complete ancestry.
- System Auditing and Inventory: Gain a clear, human-readable overview of how processes are initiated and maintained on your system.
- Optimizing Resource Usage: Identify redundant or unnecessarily started services by understanding their underlying dependencies.
