proc
<p align="center">
<img src="https://raw.githubusercontent.com/yazeed/proc-cli/main/demo.gif" alt="proc 데모: npm run dev가 포트 3000을 사용하느라 실패합니다; proc를 실행하면, 왜 그리고 누가 이 포트를 점유하고 있는지 찾고 오래된 tmux 세션을 정리하여 포트를 확보합니다." width="800" />
</p>
CI
License: MIT
Crates.io
Docker
npm
Changelog
Downloads
Open Collective
SafeSkill
Socket
Website
포트, 프로세스 ID(PID), 이름 또는 경로를 기준으로 하는 시맨틱 CLI 도구.
proc on :3000
proc for ./script.py
proc by node --in . --min-cpu 5
...
proc를 사용하는 이유?
| 작업 | proc | proc가 없을 때 |
|---|
| 포트 3000에 무엇이 실행 중인가? | proc on :3000 | lsof -i :3000 -P -n |
| ... | | |
| One syntax. One tool. 전체 비교 → | | |
설치 (Install)
| 플랫폼 | 명령어 |
|---|
| macOS | brew install yazeed/proc/proc |
| ... | |
<details>
<summary>추가 옵션</summary>
| 플랫폼 | 방법 | 명령어 |
|---|
| macOS/Linux | cargo-binstall | cargo binstall proc-cli |
| Arch Linux | AUR | yay -S proc (대기 중) |
수동 다운로드:
curl -fsSL https://github.com/yazeed/proc-cli/releases/latest/download/proc-darwin-aarch64.tar.gz | tar xz
sudo mv proc-darwin-aarch64 /usr/local/bin/proc
...
</details>
Agent Skill
코딩 에이전트(Claude Code, Codex, Cursor, Gemini CLI 등)에게 구조화된 JSON 출력을 사용하여 proc을 사용하도록 가르칠 수 있습니다:
npx skills add yazeed/proc-cli
Claude Code에서는 플러그인으로도 설치할 수 있습니다:
/plugin marketplace add yazeed/proc-cli
/plugin install proc-cli@proc-cli
이 스킬은 skills/proc-cli/에 존재하며, Agent Skills 표준을 따릅니다. 학습 내용, 업데이트 방법 및 시도할 프롬프트 →
빠른 시작 (Quick Start)
포트 3000을 사용하는 것은 무엇인가요?
종료시키기:
이 스크립트를 실행하는 것은 무엇인가요?
현재 디렉토리에서 CPU 사용량이 5%를 초과하는 모든 node 프로세스 찾기:
proc by node --in . --min-cpu 5
여러 타겟 한 번에 종료시키기:
proc kill :3000 :8080 node
프로세스를 실시간으로 감시하기:
타겟 구문 (Target Syntax)
모든 명령어는 동일한 타겟 구문을 수락합니다:
| 타겟 | 예시 | 설명 |
|---|
| 포트 (Port) | :3000 | 3000번 포트에서 리스닝하는 프로세스 |
| ... | | |
여러 타겟을 별도의 인수로 제공할 수 있으며, 세 가지 종류를 자유롭게 혼합할 수 있습니다: proc kill 1234 :3000 node. 이름이 중복되는 프로세스는 한 번만 처리되지만, 각각의 헤더 아래에서 답변하는 read-only인 on과 why는 예외입니다. 쉼표로 구분된 타겟(:3000,:8080,node)도 여전히 작동하지만 이는 사용 중단 예정(deprecated)이며, 향후 주요 버전에서 제거될 것입니다. | | |
이름은 대소문자를 무시하고 전체 프로세스 이름을 일치시킵니다. 이는 killall과 pkill이 처리하는 방식과 같습니다. proc kill node는 이름이 node인 프로세스를 중지시키고 Claude Helper는 그대로 둡니다. --by도 동일한 규칙을 따릅니다. 실행 파일의 파일명과 첫 번째 인자 또한 이름으로 간주되므로, Linux에서 15자로 잘리는 긴 이름이라도 여전히 일치하며, Windows에서는 끝에 붙는 .exe가 선택 사항입니다. 대신 --cmd를 추가하여 이름의 어느 부분 또는 전체 명령줄을 일치시킬 수 있습니다 (예: pkill -f: proc kill serve --cmd). 경로는 이름이 아닙니다. 따라서 proc kill ./server는 아무것도 찾지 못하므로, --cmd를 사용하거나 실행 파일의 경우 proc for <파일>을 사용하십시오. proc는 와일드카드(wildcard)를 확장하지 않습니다. 따옴표가 없는 node*는 셸(shell)에 의해 파일 이름으로 확장되므로, 부분 일치를 위해서는 --cmd를 사용해야 합니다.
--in은 다음 단어를 디렉토리로 사용하며, 해당 단어가 -로 시작하지 않는 경우에만 그렇습니다. 따라서 대상 뒤에 배치하거나 (proc kill 1234 5678 --in .) --in=DIR 형식으로 작성하십시오.
명령어 (Commands)
검색 (Discovery)
| 명령어 | 별칭 (Alias) | 설명 (Description) |
|---|
on <대상> | : | 양방향 포트/프로세스 조회 |
| ... | | |
생명주기 (Lifecycle)
| 명령어 | 별칭 (Alias) | 설명 (Description) |
|---|
kill <대상> | k | 강제 종료 (SIGKILL) |
| ... | | |
필터 (Filters)
필터는 검색 및 생명주기 명령어와 결합하여 사용할 수 있습니다:
| 필터 | 설명 (Description) |
|---|
--in <경로> | 작업 디렉토리(working directory)로 필터링 |
| ... | |
옵션 (Options)
| 옵션 | 단축키 (Short) | 설명 (Description) |
|---|
--json | -j | JSON 출력 |
| ... | | |
스크립팅 (Scripting)
--json 플래그를 사용하면 모든 명령어가 action (명령어 이름)과 success 값을 가진 JSON 문서 하나를 출력합니다. proc watch --json은 새로고침할 때마다 JSON 문서를 스트리밍합니다. 유효하지 않은 플래그를 포함한 오류도 JSON 형식으로 처리됩니다: {"action", "success": false, "error", "exit_code"}. 프로세스를 변경하는 명령어가 --yes 없이 --json으로 실행되면 종료 코드 4가 반환되고 "needs_confirmation": true와 해당 명령이 변경했을 프로세스 목록인 "processes"를 추가합니다. 따라서 스크립트는 이 정보를 먼저 보여준 후, 다시 --yes 플래그를 사용하여 실행할 수 있습니다.
예시
플랫폼 지원
| 플랫폼 | 아키텍처 | 상태 |
|---|
| macOS | Apple Silicon (ARM64) | ✅ |
| ... | | |
Linux 바이너리는 정적으로 링크되었으며 (musl), 특정 glibc 버전을 요구하지 않으므로 Alpine 및 Debian 10, Ubuntu 20.04, Amazon Linux 2와 같은 구형 릴리스에서도 실행됩니다.
셸 완성 기능 (Shell Completions)
사용하는 셸에 대한 완성 기능을 생성합니다:
proc completions bash > /etc/bash_completion.d/proc
...
Man 페이지
man 페이지를 생성하고 설치합니다:
proc manpage | sudo tee /usr/local/share/man/man1/proc.1 > /dev/null
소스에서 빌드하기 (Building from Source)
git clone https://github.com/yazeed/proc-cli
cd proc-cli
cargo build --release
생성된 바이너리는 target/release/proc에 위치합니다.
기여 (Contributing)
CONTRIBUTING.md를 참조하십시오.
라이선스 (License)
MIT