mprocs - 여러 명령어 병렬 실행 치트시트
mprocs는 여러 장기 실행 명령어를 동시에 실행하며, 각각 자신의 레이블 창에서 독립적인 출력 및 스크롤백을 제공하고, 단일 TUI에서 제어합니다. 프론트엔드 서버, 백엔드, 워처, 데이터베이스를 실행하기 위해 여러 터미널 또는 tmux 분할을 열어야 하는 일반적인 개발 상황을 위해 설계되었습니다. 설정 파일에서 프로세스를 한 번 정의하고 모두 함께 시작합니다.
설치
| 플랫폼 | 명령어 |
|---|
| Cargo (모든 플랫폼) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| 미리 빌드된 바이너리 | GitHub 릴리스 페이지에서 다운로드 |
기본 사용법
| 명령어 | 설명 |
|---|
mprocs | 현재 디렉토리의 mprocs.yaml 사용 시작 |
mprocs "npm run dev" "npm run api" | 즉석 명령어를 창으로 실행 |
mprocs -c path/to/mprocs.yaml | 특정 설정 파일 사용 |
mprocs --names web,api "npm run dev" "cargo run" | 즉석 창 이름 지정 |
mprocs --help | 전체 옵션 목록 |
설정(mprocs.yaml)
procs:
web:
shell: "npm run dev"
api:
shell: "cargo run"
db:
shell: "docker compose up postgres"
autostart: false # UI로 수동 시작
worker:
cmd: ["python", "worker.py"]
cwd: "./backend"
env:
LOG_LEVEL: debug
| 필드 | 목적 |
|---|
shell | 셸을 통해 실행되는 명령어 |
cmd | argv 리스트로서의 명령어(셸 파싱 없음) |
cwd | 프로세스의 작업 디렉토리 |
env | 프로세스별 환경 변수 |
autostart | 시작 시 프로세스 시작 여부 |
stop | 중지 방법(SIGTERM, SIGKILL, hard-kill) |
키보드 제어
| 키 | 액션 |
|---|
Ctrl+a then j/k | 프로세스 목록을 아래/위로 선택 이동 |
Ctrl+a then s | 선택 프로세스 시작 |
Ctrl+a then x | 선택 프로세스 중지 |
Ctrl+a then r | 선택 프로세스 재시작 |
Ctrl+a then a | 목록과 창 간 초점 전환(프로세스와 상호작용) |
Ctrl+a then c | 복사 모드 / 창 출력 스크롤 |
Ctrl+a then q | mprocs 종료(모든 프로세스 중지) |
| 마우스 | 프로세스를 클릭하여 선택; 출력 스크롤 |
접두사는 기본값이 Ctrl+a입니다. 설정 가능합니다. 접두사를 누르고 놓은 다음 액션 키를 누르세요.
원격 제어
mprocs를 프로그래밍 방식으로 제어할 수 있으므로, 스크립트 또는 편집기 작업에서 편리합니다.
# 제어 소켓을 통해 실행 중인 mprocs 인스턴스에 명령어 전송
mprocs --ctl '{c: restart-proc, proc: web}'
일반적인 워크플로우
# mprocs.yaml에 정의된 전체 로컬 스택을 제공하는 한 명령어
mprocs
# 빠른 일회용: 테스트 감시 및 개발 서버를 나란히
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# 데이터베이스 창을 표시하지만 필요할 때만 시작(autostart: false)
mprocs vs 대안
| 도구 | 모델 | 최고 |
|---|
| mprocs | TUI, 프로세스당 하나의 창 | 개발 프로세스 그룹, 간단한 설정 |
| tmux | 전체 터미널 멀티플렉서 | 세션, 분할, 원격 지속성 |
| foreman/overmind | Procfile 실행자 | Procfile 기반 프로세스 관리 |
| GNU parallel | 배치 병렬성 | 많은 단기 작업 실행, 장기 서버 아님 |
리소스