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
| Platform | Command |
|---|
| Cargo (all platforms) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| Prebuilt binary | Download from the GitHub Releases page |
Utilisation Basique
| Command | Description |
|---|
mprocs | Dé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.yaml | Utiliser un fichier config spécifique |
mprocs --names web,api "npm run dev" "cargo run" | Nommer les volets ad-hoc |
mprocs --help | Liste 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
| Field | Purpose |
|---|
shell | Commande exécutée à travers le shell |
cmd | Commande comme une liste argv (pas de parsing shell) |
cwd | Répertoire de travail pour le processus |
env | Variables d’environnement par-processus |
autostart | Si le processus démarre au lancement |
stop | Comment l’arrêter (SIGTERM, SIGKILL, hard-kill) |
Contrôles Clavier
| Key | Action |
|---|
Ctrl+a then j/k | Déplacer la sélection bas/haut la liste des processus |
Ctrl+a then s | Démarrer le processus sélectionné |
Ctrl+a then x | Arrêter le processus sélectionné |
Ctrl+a then r | Redémarrer le processus sélectionné |
Ctrl+a then a | Basculer le focus entre la liste et le volet (interagir avec le processus) |
Ctrl+a then c | Mode copie / scroll la sortie du volet |
Ctrl+a then q | Quitter mprocs (arrête tous les processus) |
| Mouse | Cliquer 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
| Tool | Model | Best for |
|---|
| mprocs | TUI, one pane per process | Groupes de processus de développement, config simple |
| tmux | Full terminal multiplexer | Sessions, splits, persistance à distance |
| foreman/overmind | Procfile runners | Gestion de processus basée sur Procfile |
| GNU parallel | Batch parallelism | Exécution de nombreux travaux courts, pas de serveurs longue durée |
Ressources