mprocs - 複数コマンドを並列実行するチートシート
mprocs は複数の長時間実行コマンドを同時に実行し、各コマンドが独立した出力とスクロールバックを持つ独自のラベル付きペインで実行され、単一の TUI から制御されます。フロントエンドサーバー、バックエンド、ウォッチャー、データベースを実行するために複数のターミナルを開くか tmux 分割を使い分ける一般的な dev シナリオ向けに設計されています。プロセスを設定ファイルで一度定義してから、全てを一緒に起動します。
インストール
| プラットフォーム | コマンド |
|---|
| 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 Releases ページからダウンロード |
基本的な使用方法
| コマンド | 説明 |
|---|
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 その後 j/k | プロセスリストを下/上に移動 |
Ctrl+a その後 s | 選択されたプロセスを開始 |
Ctrl+a その後 x | 選択されたプロセスを停止 |
Ctrl+a その後 r | 選択されたプロセスを再起動 |
Ctrl+a その後 a | リストとペイン間のフォーカスをトグル(プロセスと相互作用) |
Ctrl+a その後 c | コピーモード・ペイン出力をスクロール |
Ctrl+a その後 q | mprocs を終了(すべてのプロセスを停止) |
| マウス | プロセスをクリックして選択;その出力をスクロール |
プリフィックスはデフォルトで Ctrl+a;設定可能です。プリフィックスを押して、離してからアクションキーを押します。
リモートコントロール
mprocs はプログラム的に制御でき、スクリプトやエディタータスクから便利です。
# 実行中の mprocs インスタンスにコマンドをコントロールソケット経由で送信
mprocs --ctl '{c: restart-proc, proc: web}'
一般的なワークフロー
# mprocs.yaml で定義された完全なローカルスタックを起動するための1つのコマンド
mprocs
# クイック使い捨て:テストと dev サーバーを並べてウォッチ
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# データベースペインを present のままにしておくが、必要な場合のみ起動(autostart: false)
mprocs 対 代替案
| ツール | モデル | 最適用途 |
|---|
| mprocs | TUI、プロセスごとの1つのペイン | dev プロセスグループ、シンプルな設定 |
| tmux | 完全なターミナルマルチプレクサー | セッション、分割、リモート永続化 |
| foreman/overmind | Procfile ランナー | Procfile ベースプロセス管理 |
| GNU parallel | バッチ並列化 | 多数の短いジョブの実行、長寿命サーバーではない |
リソース