Skip to content

Witr

리눅스 시스템에서 프로세스가 실행 중인 이유를 설명하는 도구

About

  • Witr (why-is-this-running) 는 리눅스 시스템에서 특정 프로세스, 서비스, 또는 포트가 왜 실행 중인지를 명확히 보여주는 도구
  • 기존 ps, top, lsof 등이 단순히 “무엇이 실행 중인지”만 보여주는 것과 달리, “왜 실행 중인지”의 인과 관계를 한 화면에 표시
  • PID 기반 분석을 통해 프로세스의 기원, 실행 경로, 유지 원인, 소속 컨텍스트를 추적
  • systemd, docker, pm2, cron, shell 등 다양한 소스와 연계해 실행 원인을 설명하며, 읽기 전용·비파괴적으로 동작
  • 디버깅과 장애 대응 시 이해 시간을 단축하고, 복잡한 시스템의 실행 구조를 한눈에 파악할 수 있는 도구

목적과 개념

  • Witr의 핵심 질문은 “왜 이것이 실행 중인가? (why-is-this-running)”임
    • 프로세스, 서비스, 포트 등 실행 중인 모든 항목의 기원과 원인을 추적
    • 여러 계층(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: 루트 권한 실행, 공용 인터페이스 리스닝, 장기 실행, 메모리 과다 사용 등 비차단 경고

See also

Favorite site