node进程对象

process 进程

process 是 Node.js 的内置对象,用于处理当前 Node.js 进程。process 对象提供了当前 Node.js 进程的信息,以及控制当前进程。

on 事件

on 事件用于监听进程事件。

exit

node 进程即将退出时触发,接收 code 参数,表示进程退出的代码,回调函数中只能执行同步代码

1
process.on("exit", (code) => {});

beforeExit

当 Node.js 清空事件循环并且没有其他工作要安排时触发, 回调函数中可以执行异步操作, 如果在此事件中安排额外的工作,可以阻止进程退出

1
process.on('beforeExit', ('code') => {})

process.exit() 不会触发该回调

SIGINT

当用户使用 Ctrl+C 退出时触发 或 使用 kill -2 命令

1
process.on("SIGINT", () => {});

SIGTERM

终止信号。SIGTERM 通常来自系统管理工具

触发时机:

  • kill 默认发送的信号

  • 容器编排系统(如 Kubernetes)停止容器时发送

1
2
3
4
process.on("SIGUSR1", () => {
console.log("收到 SIGUSR1 信号");
// 执行自定义操作,如重新加载配置
});

异常事件处理

uncaughtException

捕获未处理的异常

1
2
3
4
5
6
process.on("uncaughtException", (err, origin) => {
console.error("未捕获的异常:", err);
console.error("异常来源:", origin);
// 执行必要的清理
process.exit(1); // 必须退出进程
});

origin 异常来源

unhandledRejection

捕获未被处理的 Promise rejection

1
2
3
4
process.on("unhandledRejection", (reason, promise) => {
console.error("未处理的 Promise 拒绝:", reason);
// 可以记录日志或执行其他处理
});

进程控制

eixt

退出进程,接收 code 为参数

退出码 code:

  • 0: 正常退出
  • 1: 一般错误,未捕获的异常,未处理的错误
  • 2: 系统错误,bash/shell 错误,很少使用
  • 3: js 解析错误
  • 4: jss 运行错误
  • 5: 致命错误/V8 引擎错误
  • 6: 内部异常处理错误, 未捕获异常处理函数本身出错
  • 7: 未处理的 Promise rejection
  • 8: 未捕获异常 (Uncaught Exception)
  • 9: 无效参数 (Invalid Argument)
1
process.exit(0);

abort

立即终止 Node.js 进程,生成核心转储文件

  • 特点
    • 不执行任何清理操作
    • Unix 系统会生成 core 文件
    • 退出码通常是 134 (128 + SIGABRT 信号码 6)
1
2
3
4
if (criticalError) {
console.error("致命错误,立即终止");
process.abort();
}

nextTick

将回调放入”下一个时间点”队列

  • 特点:
    • 比 setImmediate() 更早执行
    • 常用于拆分长时间运行的操作
1
2
3
4
5
function asyncOperation() {
process.nextTick(() => {
console.log("这会在当前操作完成后立即执行");
});
}

工作目录与环境变量

cwd

返回当前进程的工作目录

1
console.log(`当前目录: ${process.cwd()}`);

chdir

改变当前工作目录

1
2
3
4
5
6
try {
process.chdir("/tmp");
console.log(`新目录: ${process.cwd()}`);
} catch (err) {
console.error(`切换目录失败: ${err}`);
}

进程信息与监控

memoryUsage

返回内存使用情况对象

1
2
3
4
5
6
{
rss: 4935680, // 常驻集大小
heapTotal: 1826816, // 堆总量
heapUsed: 650472, // 已用堆内存
external: 49879 // C++对象内存
}

cpuUsage

返回 CPU 使用时间(微秒)

1
2
3
4
const startUsage = process.cpuUsage();
// 执行一些操作...
const endUsage = process.cpuUsage(startUsage);
console.log(`CPU使用: ${endUsage.user} user, ${endUsage.system} system`);

uptime

返回 Node.js 进程已运行时间(秒)

1
console.log(`进程已运行 ${process.uptime()} 秒`);

标准输入输出

stdin

标准输入流(可读流)

1
2
3
process.stdin.on("data", (data) => {
console.log(`收到输入: ${data}`);
});

stdout

标准输出流(可写流)

1
process.stdout.write("直接输出到控制台\n");

兼容

platform

系统类型

1
2
3
4
5
if (process.platform === "win32") {
// Windows 特定逻辑
} else {
// Unix 系统逻辑
}

node进程对象
https://www.zphl.top/posts/node-precess.html
作者
lzp
发布于
2025年5月16日
许可协议