コンテンツにスキップ

mprocs - 複数コマンドを並列実行するチートシート

mprocs - 複数コマンドを並列実行するチートシート

mprocs は複数の長時間実行コマンドを同時に実行し、各コマンドが独立した出力とスクロールバックを持つ独自のラベル付きペインで実行され、単一の TUI から制御されます。フロントエンドサーバー、バックエンド、ウォッチャー、データベースを実行するために複数のターミナルを開くか tmux 分割を使い分ける一般的な dev シナリオ向けに設計されています。プロセスを設定ファイルで一度定義してから、全てを一緒に起動します。

インストール

プラットフォームコマンド
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 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シェルを通じて実行されるコマンド
cmdargv リストのコマンド(シェル解析なし)
cwdプロセス作業ディレクトリ
envプロセスごとの環境変数
autostart起動時にプロセスを開始するかどうか
stop停止方法(SIGTERMSIGKILLhard-kill

キーボードコントロール

キーアクション
Ctrl+a その後 j/kプロセスリストを下/上に移動
Ctrl+a その後 s選択されたプロセスを開始
Ctrl+a その後 x選択されたプロセスを停止
Ctrl+a その後 r選択されたプロセスを再起動
Ctrl+a その後 aリストとペイン間のフォーカスをトグル(プロセスと相互作用)
Ctrl+a その後 cコピーモード・ペイン出力をスクロール
Ctrl+a その後 qmprocs を終了(すべてのプロセスを停止)
マウスプロセスをクリックして選択;その出力をスクロール

プリフィックスはデフォルトで 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 対 代替案

ツールモデル最適用途
mprocsTUI、プロセスごとの1つのペインdev プロセスグループ、シンプルな設定
tmux完全なターミナルマルチプレクサーセッション、分割、リモート永続化
foreman/overmindProcfile ランナーProcfile ベースプロセス管理
GNU parallelバッチ並列化多数の短いジョブの実行、長寿命サーバーではない

リソース