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多是異步的輸出,因此若是輸出的值和你預期的不一致,那麼也沒必要要大驚小怪,可能由於它是異步的輸出。
在生產環境,不要將大量日誌輸出到標準輸出