Conceptos Básicos de Procesos
7 ejemplos para empezar con Procesos y Workers - 5 básicos y 2 intermedios.
Busca en todas las páginas de la documentación
7 ejemplos para empezar con Procesos y Workers - 5 básicos y 2 intermedios.
Identifica el proceso en ejecución y los argumentos de la CLI.
console.log('pid', process.pid);
console.log('argv', process.argv.slice(2));process.pid es único por proceso del sistema operativo - regístralo en logs estructurados.argv incluye los argumentos del usuario después de node y la ruta del script.Relacionado: os y process - metadatos del host
Señala éxito o fracaso a shells y CI.
function main(): void {
const ok = true;
process.exit(ok ? 0 : 1);
}process.exit omite el vaciado de E/S.Las APIs ligadas a E/S no deben generar procesos por solicitud.
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 la E/S de red - no se necesita un proceso adicional.Relacionado: Mejores Prácticas del Bucle de Eventos - mantén el hilo principal responsivo
Trabajo de CPU fuera del hilo principal de 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 datos serializables al inicio..ts separado sobre eval: true en producción.Relacionado: worker_threads - pools y SharedArrayBuffer
Ejecuta herramientas CLI externas como procesos hijos.
import { spawn } from 'node:child_process';
const child = spawn('node', ['--version'], { stdio: 'inherit' });
child.on('exit', (code) => console.log('exit', code));spawn transmite stdio - bueno para seguir logs y ffmpeg.shell: true con entrada de usuario - riesgo de inyección.exec vs spawn.Bifurca workers para usar múltiples núcleos de CPU para el bucle de aceptación.
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 en producción.Relacionado: Módulo cluster - patrones de producción
Deja de aceptar trabajo antes de salir en SIGTERM.
process.on('SIGTERM', () => {
console.log('draining...');
setTimeout(() => process.exit(0), 2000);
});server.close() de HTTP y el final del pool de la base de datos.Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS Activo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, y NestJS 11.
Revisado por Chris St. John·Última actualización: 19 jul 2026