一、簡介
PM2是node進(jìn)程管理工具,可以利用它來簡化很多node應(yīng)用管理的繁瑣任務(wù),如性能監(jiān)控、自動(dòng)重啟、負(fù)載均衡等,而且使用非常簡單。
二、前期必備
node 環(huán)境
npm
三、安裝
全局安裝
npm install -g pm2
四、入門教程
挑express應(yīng)用來舉例。一般我們都是通過npm start啟動(dòng)應(yīng)用,其實(shí)就是調(diào)用node ./bin/www。那么,換成pm2就是
注意,這里用了–watch參數(shù),意味著當(dāng)你的express應(yīng)用代碼發(fā)生變化時(shí),pm2會(huì)幫你重啟服務(wù)(長時(shí)間監(jiān)測有可能會(huì)出現(xiàn)問題,這時(shí)需要重啟項(xiàng)目)
pm2 start ./bin/www –watch
五、常用命令
啟動(dòng)
參數(shù)說明:?
–watch:監(jiān)聽?wèi)?yīng)用目錄的變化,一旦發(fā)生變化,自動(dòng)重啟。如果要精確監(jiān)聽、不見聽的目錄,最好通過配置文件。
-i –instances:啟用多少個(gè)實(shí)例,可用于負(fù)載均衡。如果-i 0或者-i max,則根據(jù)當(dāng)前機(jī)器核數(shù)確定實(shí)例數(shù)目。
–ignore-watch:排除監(jiān)聽的目錄/文件,可以是特定的文件名,也可以是正則。比如–ignore-watch=”test node_modules “some scripts”“
-n –name:應(yīng)用的名稱。查看應(yīng)用信息的時(shí)候可以用到。
-o –output :標(biāo)準(zhǔn)輸出日志文件的路徑。
-e –error :錯(cuò)誤輸出日志文件的路徑。
–interpreter :the interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script來編寫應(yīng)用。?
完整命令行參數(shù)列表:地址
pm2 start app.js –watch -i 2
重啟
pm2 restart app.js
停止
停止特定的應(yīng)用。可以先通過pm2 list獲取應(yīng)用的名字(–name指定的)或者進(jìn)程id。
pm2 stop app_name|app_id
如果要停止所有應(yīng)用,可以
pm2 stop all
刪除
pm2 stop app_name|app_id?
pm2 stop all
查看進(jìn)程狀態(tài)
pm2 list
自動(dòng)重啟
pm2 start app.js –watch
*這里是監(jiān)控整個(gè)項(xiàng)目的文件
日志查看
除了可以打開日志文件查看日志外,還可以通過pm2 logs來查看實(shí)時(shí)日志。
pm2 logs
pm2 save # 記得保存進(jìn)程狀態(tài)
npm install pm2 -g
pm2 update
附pm2命令:
$ npm install pm2 -g? ? # 命令行安裝 pm2
$ pm2 start app.js -i 4? # 后臺(tái)運(yùn)行pm2,啟動(dòng)4個(gè)app.js
? ? ? ? ? ? ? ? ? ? ? ? # 也可以把'max' 參數(shù)傳遞給 start
? ? ? ? ? ? ? ? ? ? ? ? # 正確的進(jìn)程數(shù)目依賴于Cpu的核心數(shù)目
$ pm2 start app.js --name my-api # 命名進(jìn)程
$ pm2 list? ? ? ? ? ? ? # 顯示所有進(jìn)程狀態(tài)
$ pm2 monit? ? ? ? ? ? ? # 監(jiān)視所有進(jìn)程
$ pm2 logs? ? ? ? ? ? ? # 顯示所有進(jìn)程日志
$ pm2 stop all? ? ? ? ? # 停止所有進(jìn)程
$ pm2 restart all? ? ? ? # 重啟所有進(jìn)程
$ pm2 reload all? ? ? ? # 0 秒停機(jī)重載進(jìn)程 (用于 NETWORKED 進(jìn)程)
$ pm2 stop 0? ? ? ? ? ? # 停止指定的進(jìn)程
$ pm2 restart 0? ? ? ? ? # 重啟指定的進(jìn)程
$ pm2 startup? ? ? ? ? ? # 產(chǎn)生 init 腳本 保持進(jìn)程活著
$ pm2 web? ? ? ? ? ? ? ? # 運(yùn)行健壯的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0? ? ? ? ? # 殺死指定的進(jìn)程
$ pm2 delete all? ? ? ? # 殺死全部進(jìn)程
參考文獻(xiàn):
https://www.cnblogs.com/bjgua/p/7656833.html