mprocs - Folha de Dicas para Executar Múltiplos Comandos em Paralelo
mprocs executa vários comandos de longa duração simultaneamente, cada um em seu próprio painel rotulado com saída e scrollback independentes, controlado a partir de um único TUI. É projetado para a situação comum de dev onde você abriria múltiplos terminais ou splits tmux para executar um servidor frontend, um backend, um watcher e um banco de dados. Você define os processos uma vez em um arquivo de configuração e os inicia todos juntos.
Instalação
| Plataforma | Comando |
|---|
| Cargo (todas as plataformas) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| Binário pré-construído | Download da página GitHub Releases |
Uso Básico
| Comando | Descrição |
|---|
mprocs | Comece usando mprocs.yaml no diretório atual |
mprocs "npm run dev" "npm run api" | Execute comandos ad-hoc como painéis |
mprocs -c path/to/mprocs.yaml | Use um arquivo de configuração específico |
mprocs --names web,api "npm run dev" "cargo run" | Nomeie painéis ad-hoc |
mprocs --help | Lista completa de opções |
Configuração (mprocs.yaml)
procs:
web:
shell: "npm run dev"
api:
shell: "cargo run"
db:
shell: "docker compose up postgres"
autostart: false # inicie manualmente com a UI
worker:
cmd: ["python", "worker.py"]
cwd: "./backend"
env:
LOG_LEVEL: debug
| Campo | Propósito |
|---|
shell | Comando executado através do shell |
cmd | Comando como lista argv (sem análise de shell) |
cwd | Diretório de trabalho para o processo |
env | Variáveis de ambiente por processo |
autostart | Se o processo inicia no lançamento |
stop | Como pará-lo (SIGTERM, SIGKILL, hard-kill) |
Controles de Teclado
| Tecla | Ação |
|---|
Ctrl+a depois j/k | Mova a seleção para baixo/acima na lista de processos |
Ctrl+a depois s | Inicie o processo selecionado |
Ctrl+a depois x | Pare o processo selecionado |
Ctrl+a depois r | Reinicie o processo selecionado |
Ctrl+a depois a | Alterne foco entre lista e painel (interaja com o processo) |
Ctrl+a depois c | Modo de cópia / role a saída do painel |
Ctrl+a depois q | Saia do mprocs (para todos os processos) |
| Mouse | Clique em um processo para selecionar; role sua saída |
O prefixo padrão é Ctrl+a; é configurável. Pressione o prefixo, solte e a tecla de ação.
Controle Remoto
mprocs pode ser controlado programaticamente, o que é útil a partir de scripts ou tarefas do editor.
# Envie um comando para uma instância mprocs em execução sobre seu socket de controle
mprocs --ctl '{c: restart-proc, proc: web}'
Fluxos de Trabalho Comuns
# Um comando para trazer uma stack local completa definida em mprocs.yaml
mprocs
# Quick throwaway: assista testes e um servidor de dev lado a lado
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# Mantenha o painel do banco de dados presente mas inicie-o apenas quando necessário (autostart: false)
mprocs vs Alternativas
| Ferramenta | Modelo | Melhor para |
|---|
| mprocs | TUI, um painel por processo | Grupos de processos dev, configuração simples |
| tmux | Multiplexador de terminal completo | Sessões, splits, persistência remota |
| foreman/overmind | Executores Procfile | Gerenciamento de processo baseado em Procfile |
| GNU parallel | Paralelismo em lote | Executar muitos trabalhos curtos, não servidores de longa duração |
Recursos