Node之全局变量-process

173 阅读2分钟

用处:用于获取进程信息,无需require即可执行

  1. 资源:cpu 内存

console.log(process.memoryUsage())

得到结果:

image.png

rss:当前的常驻内存
heapTotal:当前脚本执行之初申请的总的内存大小
heapUsed:当前脚本执行过程中实际使用的内存大小
external:扩展内存<底层模块(c/c++)所占据的内存大小>
arrayBuffers:缓冲区-独立的空间大小

console.log(process.cpuUsage())

image.png

user:用户执行所占用的cpu的事件片段
system:系统执行所占用的cpu的事件片段
  1. 运行环境:运行目录、node环境、cpu架构、用户环境、系统平台

运行目录: console.log(process.cwd())

node环境:

console.log(process.version)

console.log(process.versions)

cpu架构: console.log(process.arch)

用户环境:

console.log(process.env.NODE_ENV)

console.log(process.env.PATH)

console.log(process.env.USERPROFILE) // 获取层级管理员目录 -- Windows系统

console.log(process.env.HOME) // 获取层级管理员目录 -- Mac系统

系统平台:console.log(process.platform)

  1. 运行状态:启动参数、PID、运行时间

启动参数:

console.log(process.argv) // 返回一个数组,基础值有两个 
0:nodejs.exe所在目录 
1:当前脚本所在目录 
console.log(process.argv0) // 取到第一个值 注意只有argv0并没有argv1及其后续的值 
process.execArgv // 获取启动参数/配置参数等

PID:

console.log(process.pid) // 获取当前进程的进程 ID 的方法,而浏览器中没有这个属性。
console.log(process.ppid) // 获取当前进程的父进程 ID 的属性

运行时间:

console.log(process.uptime()) // 程序运行开始到结束所消耗的时间
setTimeout(() => {
    console.log(process.uptime()
)}, 3000)
  1. 事件

监听退出之前的事件--在'exit'事件之前执行:

process.on('beforeExit', (code) => {
    // 做一些操作,code为退出状态码,0为正常退出
    // 'beforeExit'事件内部可以执行异步事件操作
})

监听退出事件:

process.on('exit', (code) => {
    // 做一些操作,code为退出状态码,0为正常退出
    // 'exit'事件内部不能执行异步事件操作
})

注:二者的代码顺序位置没有关系,'beforeExit'会比'exit'事件先执行,除非进行强制的程序退出操作,例如:process.exit():主动退出程序,后续将不会执行 -- 只会触发'exit'事件,不会触发'beforeExit'事件

  1. 标准输出、输入、错误

标准输出:process.stdout

标准输入:process.stdin

process.stdin.setEncoding('utf-8')
process.stdin.on('readable', () => {
    let chunk = process.stdin.read()
    if(chunk != null) {
        process.stdout.write('data ' + chunk)
    }
})