从官网学习Node.js Process模块方法速查

41次阅读

共计 3390 个字符,预计需要花费 9 分钟才能阅读完成。

1. Process
process 是一个全局的对象,不需要 require。process 提供控制和获取当前 Node.js 进程信息的能力。
1.1. Process Events
process 对象实际上是一个 EventEmitter 的一个实例。
下面列举了 process 对象上可以监听的事件。

beforeExit 当 eventloop 是空的时候触发,直接调用 process.exit() 并不会触发此事件

disconnect 当 IPC 通道关闭时触发

exit 当调用 process.exit() 后会触发

message 当消息被子进程收到是触发,消息可能会和原始消息不同

multipleResolves 当 Promise 被多次 resolve 时触发

rejectionHandled 当 Promise 被 rejected 并且错误被 catch() 捕获是触发

uncaughtException 当发生未捕获的异常时触发。当发生未捕获异常时,程序已经进入了无法预测的状态,最好的方式是重启服务

unhandledRejection 当 Promise 被 rejected 并且没有使用 catch() 去捕获是触发。最好给每一个 Promise 增加.catch() 方法去处理错误

warning 当 Node.js 发出警告时触发

SIGINT 信号事件。还有 SIGTERM 类似的

1.2. 进程控制相关

process.pid 进程 id

process.ppid 父进 id

process.title 当前进程的名称

process.uptime() 获取当前 Node.js 进程已经运行的时长

process.abort() 中断 Node.js 进程

process.chdir(directory) 切换路径

process.cwd() 获取当前工作路径

process.emitWarning(warning[, options]) 发送告警信息

process.emitWarning(warning[, type[, code]][, ctor]) 发送告警信息, 告警信息会触发 warning 事件

process.on(‘warning’, (warning) => {
console.warn(warning.name); // ‘Warning’
console.warn(warning.message); // ‘Something happened!’
console.warn(warning.code); // ‘MY_WARNING’
console.warn(warning.stack); // Stack trace
console.warn(warning.detail); // ‘This is some additional information’
});

process.exit() 让 Node.js 尽快退出。一般情况下都不需要使用该方法

process.exitCode 进程退出码

process.kill(pid[, signal]) kill 进程

process.nextTick(callback[, ...args]) 将回调放入 next tick queue, 详情建议参考 event-loop-timers-and-nexttick

process.setUncaughtExceptionCaptureCallback(fn) 设置未捕获异常的回调

1.3. Node.js 自身相关

process.allowedNodeEnvironmentFlags 被允许的环境标志

process.platform 平台信息

process.release Node.js 版本信息

process.version Node.js 版本信息

process.versions 获取 Node.js 依赖项的版本信息,例如 v8、uv、zlib 等的版本信息

process.env 获取系统环境变量

注意: 对 process.env 的某个属性改变,并不会影响到系统的环境变量。例如 process.env.wdd=1, 并不会在系统上创建一个名为 wdd 的环境量。process.env 是进程内部共享,进程外部透明的。
注意:process.env 在 Worker 线程上是只读的。
注意:在 windows 系统,环境变量名是大小写不敏感的
注意:环境变量都是字符串。设置环境变量 wdd=100, 那么 process.env.wdd 获取的是字符串 100, 而不是数字 100。使用时要注意类型转换。

1.4. 系统运行状况

process.cpuUsage([previousValue]) 获取 CPU 使用率

process.hasUncaughtExceptionCaptureCallback() 指示使用使用 process.setUncaughtExceptionCaptureCallback() 设置了回调函数

process.memoryUsage() 获取内存使用情况

1.5. 启动参数相关

process.config 是一个对象,表示编译当前 Node.js 的一些配置参数

process.arch 获取当前系统 CPU 架构

process.argv 是一个数组,表示 Node.js 启动的参数。数组第一项是 Node.js 可执行文件的路径,数组的第二项是你的代码源文件路径,其余项是其他的一些参数。

node process-args.js one two=three four

// print process.argv
process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`);
});

0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four

process.argv0 实际上是 process.argv 数组的第一项,只不过它是只读的。

process.execArgv 是 Node.js 系统自定义的一些参数,这些参数不会出现在 process.argv 中,例如 --harmony

process.execPath Node.js 可执行文件的路径,如 '/usr/local/bin/node'

1.6. IPC 通道相关

process.channel IPC 通道,如果 IPC 通道不存在,那么该值为 undefined

process.connected 用来判断 IPC 通道是否还在建立

process.disconnect() 关闭 IPC 通道

process.send(message[, sendHandle[, options]][, callback]) 发送 IPC 消息

1.7. debug 相关

process.debugPort 获取 Node.js debug 的端口
1.8. C++ 相关

process.dlopen(module, filename[, flags]) 动态加载 C ++ 代码
1.9. 用户与用户组

process.getegid() 获取有效 gid
process.setuid(id)

process.geteuid() 获取有效 uid

process.setegid(id) 设置有效 uid

process.getgid() 获取 gid
process.setgid(id)

process.getgroups() 获取
process.setgroups(groups)
process.umask([mask])

1.10. Process IO 输出输出相关

process.stderr 标准错误流

process.stdin 标准输入流

process.stdout 标注输出流

process.stdout 和 process.stderr 和 Node.js 其他 stream 有很大的不同。

他们主要被 console.log 和 console.error 使用

写操作是否是同步取决于 stream 的类型,以及操作系统是 windows 还是 POSIX

文件:在 windows 和 POSIX 上都是同步
TTYs(终端):在 windows 上异步,在 POSIX 上同步
Pipes (sockets): 在 windows 上同步,在 POSIX 上异步

注意事项:

由于 console.log 或者 console.error 可能是异步的输出,所以如果输出的值和你预期的不一致,那么也不必要大惊小怪,可能因为它是异步的输出。
在生产环境,不要将大量日志输出到标准输出

正文完
 0