콘텐츠로 이동

mprocs - 여러 명령어 병렬 실행 치트시트

mprocs - 여러 명령어 병렬 실행 치트시트

mprocs는 여러 장기 실행 명령어를 동시에 실행하며, 각각 자신의 레이블 창에서 독립적인 출력 및 스크롤백을 제공하고, 단일 TUI에서 제어합니다. 프론트엔드 서버, 백엔드, 워처, 데이터베이스를 실행하기 위해 여러 터미널 또는 tmux 분할을 열어야 하는 일반적인 개발 상황을 위해 설계되었습니다. 설정 파일에서 프로세스를 한 번 정의하고 모두 함께 시작합니다.

설치

플랫폼명령어
Cargo (모든 플랫폼)cargo install mprocs
macOS (Homebrew)brew install mprocs
npmnpm 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셸을 통해 실행되는 명령어
cmdargv 리스트로서의 명령어(셸 파싱 없음)
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 qmprocs 종료(모든 프로세스 중지)
마우스프로세스를 클릭하여 선택; 출력 스크롤

접두사는 기본값이 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 대안

도구모델최고
mprocsTUI, 프로세스당 하나의 창개발 프로세스 그룹, 간단한 설정
tmux전체 터미널 멀티플렉서세션, 분할, 원격 지속성
foreman/overmindProcfile 실행자Procfile 기반 프로세스 관리
GNU parallel배치 병렬성많은 단기 작업 실행, 장기 서버 아님

리소스