Aller au contenu

mprocs - Run Multiple Commands in Parallel Cheatsheet

mprocs - Run Multiple Commands in Parallel Cheatsheet

mprocs exécute plusieurs commandes à long terme à la fois, chacune dans son propre volet étiqueté avec sortie et scroll-back indépendants, contrôlé depuis un seul TUI. Il est conçu pour la situation de développement courante où tu ouvrirais sinon plusieurs terminaux ou splits tmux pour exécuter un serveur frontend, un backend, un watcher et une base de données. Tu définis les processus une fois dans un fichier config et les démarre tous ensemble.

Installation

PlatformCommand
Cargo (all platforms)cargo install mprocs
macOS (Homebrew)brew install mprocs
npmnpm install -g mprocs
Arch Linux (AUR)yay -S mprocs
Scoop (Windows)scoop install mprocs
Prebuilt binaryDownload from the GitHub Releases page

Utilisation Basique

CommandDescription
mprocsDémarrer en utilisant mprocs.yaml dans le répertoire actuel
mprocs "npm run dev" "npm run api"Exécuter des commandes ad-hoc comme volets
mprocs -c path/to/mprocs.yamlUtiliser un fichier config spécifique
mprocs --names web,api "npm run dev" "cargo run"Nommer les volets ad-hoc
mprocs --helpListe d’options complète

Configuration (mprocs.yaml)

procs:
  web:
    shell: "npm run dev"
  api:
    shell: "cargo run"
  db:
    shell: "docker compose up postgres"
    autostart: false        # start it manually with the UI
  worker:
    cmd: ["python", "worker.py"]
    cwd: "./backend"
    env:
      LOG_LEVEL: debug
FieldPurpose
shellCommande exécutée à travers le shell
cmdCommande comme une liste argv (pas de parsing shell)
cwdRépertoire de travail pour le processus
envVariables d’environnement par-processus
autostartSi le processus démarre au lancement
stopComment l’arrêter (SIGTERM, SIGKILL, hard-kill)

Contrôles Clavier

KeyAction
Ctrl+a then j/kDéplacer la sélection bas/haut la liste des processus
Ctrl+a then sDémarrer le processus sélectionné
Ctrl+a then xArrêter le processus sélectionné
Ctrl+a then rRedémarrer le processus sélectionné
Ctrl+a then aBasculer le focus entre la liste et le volet (interagir avec le processus)
Ctrl+a then cMode copie / scroll la sortie du volet
Ctrl+a then qQuitter mprocs (arrête tous les processus)
MouseCliquer un processus pour sélectionner ; scroller sa sortie

Le préfixe par défaut est Ctrl+a ; il est configurable. Appuie sur le préfixe, relâche, puis la touche d’action.

Contrôle à Distance

mprocs peut être contrôlé programmatiquement, ce qui est pratique depuis des scripts ou des tâches d’éditeur.

# Envoyer une commande à une instance mprocs en cours d'exécution sur son socket de contrôle
mprocs --ctl '{c: restart-proc, proc: web}'

Workflows Courants

# Une commande pour démarrer une pile locale complète définie dans mprocs.yaml
mprocs

# Throwaway rapide : regarder les tests et un serveur de développement côte à côte
mprocs --names test,dev "npm test -- --watch" "npm run dev"

# Garder le volet de base de données présent mais le démarrer uniquement au besoin (autostart: false)

mprocs vs Alternatives

ToolModelBest for
mprocsTUI, one pane per processGroupes de processus de développement, config simple
tmuxFull terminal multiplexerSessions, splits, persistance à distance
foreman/overmindProcfile runnersGestion de processus basée sur Procfile
GNU parallelBatch parallelismExécution de nombreux travaux courts, pas de serveurs longue durée

Ressources