process是node内置的进程对象,使用时不需require,可以直接使用,常用的process的属性和方法有:
memoryUsage()
这个方法返回一个对象,描述了node进程的内存使用情况,属性值的单位为字节。
console.log(process.memoryUsage())
/*返回结果:
* { rss: 20660224,
heapTotal: 7159808,//堆内存的总大小
heapUsed: 4264936,//正在使用的堆内存大小
external: 8224 }
* */
nextTick(fn)
这货在vue是比较常见了,node也有这个方法,这个方法传一个回调函数,回调函数会打进微任务队列,微任务会先于宏任务(定时器timeout)执行。
setImmediate(()=>{
console.log('宏任务-定时器immediate')
})
setTimeout(()=>{
console.log('宏任务-定时器timeout')
},100)
process.nextTick(()=>{
console.log('微任务-nextTick')
})
/*
* 执行结果:
* 微任务-nextTick
宏任务-定时器immediate
宏任务-定时器timeout
* */
on()
监听方法。
比较常用的是未知异常的监听,这样出错了也不会退出node进程。
var http = require('http');
var server = http.createServer(function(req,res){
method(); //由于method()未定义,会将程序进程退出。
res.end('ok')
});
server.listen(3003);
//放大招,所有无法捕获的异常都能获取到
process.on('uncaughtException', function (err) {
console.log('Caught Exception:' + err);//直接捕获method()未定义函数,Node进程未被退出。
});
exit(code)
退出进程方法。code可以不写,默认就是0。
process.on('exit',(code)=>{
console.log('进程退出,结束状态码为:',code)
})
process.exit(1)
/*
执行结果:
进程退出,结束状态码为: 1
*/
cwd()
英文就是current working directory,现在工作的路径:
console.log(process.cwd());//打印当前process执行的路径
argv属性
打印这个属性会返回一个数组,数组有两个元素,分别是:node命令的路径、待执行文件的路径。
console.log(process.argv)
/*
* 执行结果:
* ['/usr/local/node/v8.10.0/bin/node',
* '/home/app/test.js']
* */
如果你在执行文件后面再加参数,则也可以获取到:
>node test.js 3001 3002
console.log(process.argv)
/*
* 执行结果:
* ['/usr/local/node/v8.10.0/bin/node',
* '/home/app/test.js',
* '3001','3002']
* */
pid、ppid属性
返回进程的id、父id。
console.log(process.pid)// 当前进程id:58355
console.log(process.ppid)// 当前进程的父id:56912
kill()
杀死进程id。
process.on('SIGHUP', () => {
console.log('收到 SIGHUP 信号');
});
process.on('exit',(code)=>{
console.log('进程退出,结束状态码为:',code)
})
setTimeout(() => {
console.log('退出中');
process.exit(0);
}, 100);
process.kill(process.pid, 'SIGHUP');
网友评论