process是一个全局的对象,不须要require。process提供控制和获取当前Node.js进程信息的能力。node
process对象其实是一个EventEmitter的一个实例。windows
下面列举了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相似的process.pid
进程idprocess.ppid
父进idprocess.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([code])
让Node.js尽快退出。通常状况下都不须要使用该方法process.exitCode
进程退出码process.kill(pid[, signal])
kill进程process.nextTick(callback[, ...args])
将回调放入next tick queue
, 详情建议参考event-loop-timers-and-nexttick process.setUncaughtExceptionCaptureCallback(fn)
设置未捕获异常的回调process.allowedNodeEnvironmentFlags
被容许的环境标志process.platform
平台信息process.release
Node.js版本信息process.version
Node.js版本信息process.versions
获取Node.js依赖项的版本信息,例如v八、uv、zlib等的版本信息process.env
获取系统环境变量架构
环境变量都是字符串
。设置环境变量wdd=100, 那么process.env.wdd获取的是字符串100, 而不是数字100。使用时要注意类型转换。process.cpuUsage([previousValue])
获取CPU使用率process.hasUncaughtExceptionCaptureCallback()
指示使用使用process.setUncaughtExceptionCaptureCallback()
设置了回调函数process.memoryUsage()
获取内存使用状况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'process.channel
IPC通道,若是IPC通道不存在,那么该值为undefinedprocess.connected
用来判断IPC通道是否还在创建process.disconnect()
关闭IPC通道process.send(message[, sendHandle[, options]][, callback])
发送IPC消息process.debugPort
获取Node.js debug的端口process.dlopen(module, filename[, flags])
动态加载C++代码process.getegid()
获取有效gidprocess.setuid(id)
process.geteuid()
获取有效uidprocess.setegid(id)
设置有效uidprocess.getgid()
获取gidprocess.setgid(id)
process.getgroups()
获取process.setgroups(groups)
process.umask([mask])
process.stderr
标准错误流process.stdin
标准输入流process.stdout
标注输出流process.stdout和process.stderr和Node.js其余stream有很大的不一样。app
写操做是不是同步取决于stream的类型,以及操做系统是windows仍是POSIX异步
注意事项
:socket
因为console.log或者console.error多是异步的输出,因此若是输出的值和你预期的不一致,那么也没必要要大惊小怪,可能由于它是异步的输出。
在生产环境,不要将大量日志输出到标准输出