Zum Inhalt springen

mprocs - Mehrere Befehle parallel ausführen Cheatsheet

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

PlattformBefehl
Cargo (alle Plattformen)cargo install mprocs
macOS (Homebrew)brew install mprocs
npmnpm install -g mprocs
Arch Linux (AUR)yay -S mprocs
Scoop (Windows)scoop install mprocs
Vorgefertigte BinärdateiLaden Sie aus der GitHub Releases-Seite herunter

Grundlegende Verwendung

BefehlBeschreibung
mprocsStarten 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.yamlVerwenden Sie eine bestimmte Config-Datei
mprocs --names web,api "npm run dev" "cargo run"Benennen Sie Ad-hoc-Panes
mprocs --helpVollstä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
FeldZweck
shellBefehl, der durch die Shell ausgeführt wird
cmdBefehl als argv-Liste (kein Shell-Parsing)
cwdArbeitsverzeichnis für den Prozess
envPro-Prozess-Umgebungsvariablen
autostartOb der Prozess beim Start startet
stopWie es zu stoppen ist (SIGTERM, SIGKILL, hard-kill)

Tastatur-Steuerung

TasteAktion
Ctrl+a dann j/kVerschieben Sie die Auswahl nach unten/oben in der Prozessliste
Ctrl+a dann sStarten Sie den ausgewählten Prozess
Ctrl+a dann xBeenden Sie den ausgewählten Prozess
Ctrl+a dann rStarten Sie den ausgewählten Prozess neu
Ctrl+a dann aSchalten Sie den Fokus zwischen Liste und Pane um (interagieren Sie mit dem Prozess)
Ctrl+a dann cCopy-Modus / Scrollausgabe des Panes
Ctrl+a dann qBeenden Sie mprocs (stoppt alle Prozesse)
MausKlicken 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

ToolModellBeste Einsatzgebiete
mprocsTUI, ein Pane pro ProzessDev-Prozessgruppen, einfache Config
tmuxVoller Terminal-MultiplexerSessions, Splits, Remote-Persistenz
foreman/overmindProcfile-RunnerProcfile-basierte Prozessverwaltung
GNU parallelBatch-ParallelitätAusführung vieler kurzer Jobs, nicht lang laufende Server

Ressourcen