mprocs - Mehrere Befehle parallel ausführen Cheatsheet
mprocs führt mehrere lang laufende Befehle gleichzeitig aus, jeweils in seinem eigenen beschrifteten Pane mit unabhängiger Ausgabe und Scrollback, gesteuert über ein einziges TUI. Es ist für die typische Dev-Situation konzipiert, in der Sie ansonsten mehrere Terminals oder tmux-Splits öffnen würden, um einen Frontend-Server, ein Backend, einen Watcher und eine Datenbank auszuführen. Sie definieren die Prozesse einmal in einer Config-Datei und starten sie alle zusammen.
Installation
| Plattform | Befehl |
|---|
| Cargo (alle Plattformen) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| Vorgefertigte Binärdatei | Laden Sie aus der GitHub Releases-Seite herunter |
Grundlegende Verwendung
| Befehl | Beschreibung |
|---|
mprocs | Starten Sie mit mprocs.yaml im aktuellen Verzeichnis |
mprocs "npm run dev" "npm run api" | Ad-hoc-Befehle als Panes ausführen |
mprocs -c path/to/mprocs.yaml | Verwenden Sie eine bestimmte Config-Datei |
mprocs --names web,api "npm run dev" "cargo run" | Benennen Sie Ad-hoc-Panes |
mprocs --help | Vollständige Optionsliste |
Konfiguration (mprocs.yaml)
procs:
web:
shell: "npm run dev"
api:
shell: "cargo run"
db:
shell: "docker compose up postgres"
autostart: false # starten Sie es manuell mit dem UI
worker:
cmd: ["python", "worker.py"]
cwd: "./backend"
env:
LOG_LEVEL: debug
| Feld | Zweck |
|---|
shell | Befehl, der durch die Shell ausgeführt wird |
cmd | Befehl als argv-Liste (kein Shell-Parsing) |
cwd | Arbeitsverzeichnis für den Prozess |
env | Pro-Prozess-Umgebungsvariablen |
autostart | Ob der Prozess beim Start startet |
stop | Wie es zu stoppen ist (SIGTERM, SIGKILL, hard-kill) |
Tastatur-Steuerung
| Taste | Aktion |
|---|
Ctrl+a dann j/k | Verschieben Sie die Auswahl nach unten/oben in der Prozessliste |
Ctrl+a dann s | Starten Sie den ausgewählten Prozess |
Ctrl+a dann x | Beenden Sie den ausgewählten Prozess |
Ctrl+a dann r | Starten Sie den ausgewählten Prozess neu |
Ctrl+a dann a | Schalten Sie den Fokus zwischen Liste und Pane um (interagieren Sie mit dem Prozess) |
Ctrl+a dann c | Copy-Modus / Scrollausgabe des Panes |
Ctrl+a dann q | Beenden Sie mprocs (stoppt alle Prozesse) |
| Maus | Klicken Sie auf einen Prozess, um ihn auszuwählen; scrollen Sie die Ausgabe |
Das Präfix ist standardmäßig Ctrl+a; es ist konfigurierbar. Drücken Sie das Präfix, lassen Sie los, dann die Aktionstaste.
Remote-Steuerung
mprocs kann programmatisch gesteuert werden, was praktisch ist, um es von Skripten oder Editor-Aufgaben aus zu verwenden.
# Senden Sie einen Befehl an eine laufende mprocs-Instanz über sein Control-Socket
mprocs --ctl '{c: restart-proc, proc: web}'
Häufige Workflows
# Ein Befehl, um einen vollständigen lokalen Stack zu bringen, der in mprocs.yaml definiert ist
mprocs
# Schnelle Einwegnutzung: Watch Tests und einen Dev Server nebeneinander
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# Behalten Sie das Datenbank-Pane vor, starten Sie es jedoch nur bei Bedarf (autostart: false)
mprocs vs Alternativen
| Tool | Modell | Beste Einsatzgebiete |
|---|
| mprocs | TUI, ein Pane pro Prozess | Dev-Prozessgruppen, einfache Config |
| tmux | Voller Terminal-Multiplexer | Sessions, Splits, Remote-Persistenz |
| foreman/overmind | Procfile-Runner | Procfile-basierte Prozessverwaltung |
| GNU parallel | Batch-Parallelität | Ausführung vieler kurzer Jobs, nicht lang laufende Server |
Ressourcen