Node.js全局对象-process
可以在任意位置使用,不必通过require命令引入。
属性
platform
返回一个字符串,表示当前的操作系统。当期可能的值有aix、darwin、freebsd、linux、openbsd、sunos、win32
在mac上输出为darwin,在windows上输出为win32
pid
返回一个数字,表示当前进程的进程号(程序在运行时,CPU会分配给当前程序一个进程ID号,用于唯一标识该进程)
execPath
返回node程序所在的绝对路径
console.log(process.execPath) ///usr/local/bin/node
argv
返回一个数组。第一个元素是 process.execPath ,第二个元素是正在执行的脚本路径,其余元素是其他命令行参数
例如,process.js内容如下
process.argv.forEach((val, index) => {
console.log(`${index}:${val}`)
})
执行命令
node ./process.js one two=three four
打印结果
0:/usr/local/bin/node 1:/Users/lianglanlan/Desktop/code/process.js 2:one 3:two=thre
4:four
真正的命令行参数实际是从 process.argv[2] 开始,要得到真正的参数,这样做
const myArgs = process.argv.slice(2)
console.log(myArgs)
version
返回Node.js版本字符串
console.log(`版本: ${process.version}`) //版本: v10.20.1
memoryUsage()
返回描述Node.js进程内存使用量的对象,单位字节,对象有下面几个属性
- rss:进程占用的内存部分,包括代码本身、堆、栈
- heapTotal:堆中总共申请到的内存量
- heapUsed:堆中目前用到的内存量,判断内存泄漏主要以这个字段为准
- external:V8引擎内部C++对象占用的内存
代码参考地址:https://zhuanlan.zhihu.com/p/72380507
/** * 单位为字节格式为 MB 输出 */ const format = bytes => (bytes / 1024 / 1024).toFixed(2) + 'MB' /** * 封装 print 方法输出内存占用信息 */ const print = () => { const memoryUsage = process.memoryUsage() console.log(JSON.stringify({ rss: format(memoryUsage.rss), heapTotal: format(memoryUsage.heapTotal), heapUsed: format(memoryUsage.heapUsed), external: format(memoryUsage.external) })) } function Quantity(num) { //返回一个空数组 if (num) { return new Array(num * 1024 * 1024) } return num } function Fruit(name, quantity) { this.name = name this.quantity = new Quantity(quantity) } let apple = new Fruit('apple') print() //{"rss":"22.98MB","heapTotal":"8.51MB","heapUsed":"4.05MB","external":"1.39MB"} let banana = new Fruit('banana', 20) print() //{"rss":"183.27MB","heapTotal":"168.52MB","heapUsed":"164.14MB","external":"1.40MB"}
事件
process.exit([code])
- code:退出码,默认值为0
以code为状态指示Nodejs终止进程。失败状态退出码为1
process.exit(1);
process.cwd()
返回Node.js进程的当前工作目录
console.log(`当前工作目录是:: ${process.cwd()}`) //当前工作目录是:: /Users/lianglanlan/Desktop/code/study/node/01