-
Witr는 리눅스 시스템에서 특정 프로세스, 서비스, 또는 포트가 왜 실행 중인지를 명확히 보여주는 도구
- 기존 ps, top, lsof 등이 단순히 “무엇이 실행 중인지”만 보여주는 것과 달리, “왜 실행 중인지”의 인과 관계를 한 화면에 표시
-
PID 기반 분석을 통해 프로세스의 기원, 실행 경로, 유지 원인, 소속 컨텍스트를 추적
-
systemd, docker, pm2, cron, shell 등 다양한 소스와 연계해 실행 원인을 설명하며, 읽기 전용·비파괴적으로 동작
- 디버깅과 장애 대응 시 이해 시간을 단축하고, 복잡한 시스템의 실행 구조를 한눈에 파악할 수 있는 도구
목적과 개념
-
Witr의 핵심 질문은 “왜 이것이 실행 중인가?”임
- 프로세스, 서비스, 포트 등 실행 중인 모든 항목의 기원과 원인을 추적
- 여러 계층(supervisor, container, service, shell 등)에 걸친 간접적 실행 원인을 명시적으로 보여줌
- 기존 도구들이 상태와 메타데이터만 제공하는 반면, Witr는 인과 관계를 명확히 표현
- 결과적으로 “무엇이, 어떻게, 왜, 어떤 맥락에서 실행 중인지”를 사람이 읽기 쉬운 형태로 출력
주요 목표
-
프로세스 존재 이유를 설명하고, 단순 실행 여부 이상의 정보를 제공
-
디버깅 및 장애 대응 시간 단축
-
설정 없이 바로 사용 가능, 읽기 전용·안전성 보장
-
완전성보다 명확성을 우선
- 모니터링, 성능 분석, 자동 복구 기능은 포함하지 않음
작동 원리
- 모든 대상을 프로세스(PID) 중심으로 해석
- 포트, 서비스, 컨테이너, 명령어 모두 PID로 연결
- PID를 기준으로 실행 인과 체인(causal chain) 을 구성
- 핵심 질문 네 가지
- 무엇이 실행 중인가
- 어떻게 시작되었는가
- 무엇이 유지시키고 있는가
- 어떤 컨텍스트에 속하는가
지원 대상
-
프로세스/서비스 이름, PID, 포트 번호를 입력 대상으로 지원
- 이름 입력 시 여러 프로세스가 일치하면 PID 선택을 요청
-
--pid, --port 옵션으로 특정 프로세스나 포트 기반 분석 가능
출력 구조
-
Target: 사용자가 지정한 대상
-
Process: 실행 파일, PID, 사용자, 명령어, 시작 시각, 재시작 횟수
-
Why It Exists: 프로세스의 인과 계보(ancestry chain)
-
Source: 실행을 담당한 주요 시스템 (예: systemd, docker, pm2, cron, shell 중 하나)
-
Context: 작업 디렉터리, Git 저장소, Docker 컨테이너, 바인드 정보 등
-
Warnings: 루트 권한 실행, 공용 인터페이스 리스닝, 장기 실행, 메모리 과다 사용 등 비차단 경고
명령줄 옵션
-
--pid, --port: 특정 PID 또는 포트 분석
-
--short: 한 줄 요약
-
--tree: 전체 프로세스 트리 표시
-
--json: JSON 형식 출력
-
--warnings: 경고만 표시
-
--no-color: 색상 비활성화
-
--env: 환경 변수만 표시
-
--help: 도움말 표시
출력 예시
-
이름 기반 조회: witr node → systemd → pm2 → node 형태의 실행 경로 표시
-
짧은 출력: --short 옵션으로 한 줄 인과 체인 표시
-
트리 출력: --tree 옵션으로 계층 구조 시각화
-
다중 일치: 동일 이름의 여러 프로세스가 있을 경우 PID 선택 요청
-
모호한 이름: 서비스와 프로세스가 동일 이름일 경우 명시적 PID 지정 요구
설치 및 제거
-
단일 정적 Linux 바이너리 형태로 배포
-
스크립트 설치(권장)
-
수동 설치
-
amd64, arm64용 바이너리 직접 다운로드 및 체크섬 검증
- 실행 권한 부여 후 PATH에 이동
-
검증 및 제거
-
witr --version, man witr로 확인
-
sudo rm -f /usr/local/bin/witr로 제거 가능
-
Nix Flake 지원: nix run github:pranshuparmar/witr -- --port 5000으로 실행 가능
플랫폼 및 권한
-
Linux 전용
-
/proc 접근을 통해 정보 수집
- 일부 프로세스 정보 확인에는 sudo 권한 필요
성공 기준
- 사용자가 몇 초 내에 “왜 실행 중인가”를 파악할 수 있을 것
- 여러 도구를 병행할 필요 없이 단일 출력으로 이해 가능할 것
- 스트레스 상황에서도 읽기 쉬운 출력 제공
- 신뢰할 수 있는 결과 제공
AI 보조 개발 명시
-
GitHub Copilot, ChatGPT 등 AI 도구의 도움을 받아 개발되었으며, 인간의 감독 하에 진행됨