Noções Básicas de Processos
7 exemplos para você começar com Processos e Workers - 5 básicos e 2 intermediários.
Busque em todas as páginas da documentação
7 exemplos para você começar com Processos e Workers - 5 básicos e 2 intermediários.
Identifique o processo em execução e os argumentos da linha de comando.
console.log('pid', process.pid);
console.log('argv', process.argv.slice(2));process.pid é único por processo do SO - registre em logs estruturados.argv inclui argumentos do usuário após node e o caminho do script.Relacionado: os e process - metadados do host
Sinalize sucesso ou falha para shells e CI.
function main(): void {
const ok = true;
process.exit(ok ? 0 : 1);
}process.exit ignora o flush de I/O.APIs limitadas por I/O não devem criar processos por solicitação.
import { createServer } from 'node:http';
createServer(async (req, res) => {
const data = await fetch('https://example.com').then((r) => r.text());
res.end(data.slice(0, 100));
}).listen(3000);await cede durante o I/O de rede - nenhum processo extra é necessário.Relacionado: Melhores Práticas do Event Loop - mantenha a thread principal responsiva
Trabalho de CPU fora da thread principal do JavaScript.
import { Worker } from 'node:worker_threads';
const worker = new Worker(`
const { parentPort, workerData } = require('worker_threads');
parentPort.postMessage(workerData.x * 2);
`, { eval: true, workerData: { x: 21 } });
worker.on('message', (msg) => console.log(msg)); // 42workerData clona dados serializáveis no início..ts separado em vez de eval: true em produção.Relacionado: worker_threads - pools e SharedArrayBuffer
Execute ferramentas CLI externas como processos filhos.
import { spawn } from 'node:child_process';
const child = spawn('node', ['--version'], { stdio: 'inherit' });
child.on('exit', (code) => console.log('exit', code));spawn transmite stdio - bom para rastreamento de logs e ffmpeg.shell: true com entrada do usuário - risco de injeção.exec vs spawn.Cria processos (forks) de workers para usar múltiplos núcleos de CPU para o loop de aceitação.
import cluster from 'node:cluster';
import { availableParallelism } from 'node:os';
import { createServer } from 'node:http';
if (cluster.isPrimary) {
const cpus = availableParallelism();
for (let i = 0; i < cpus; i++) cluster.fork();
} else {
createServer((_req, res) => res.end(`worker ${process.pid}`)).listen(3000);
}exit em produção.Relacionado: Módulo cluster - padrões de produção
Pare de aceitar trabalho antes de sair em SIGTERM.
process.on('SIGTERM', () => {
console.log('draining...');
setTimeout(() => process.exit(0), 2000);
});server.close() do HTTP e o fim do pool de banco de dados.Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026