pm2
最近的项目接触到node
在linux环境下的部署,使用node app.js
启动程序很容易挂掉,且需要手动重启,这就需要使用pm2。
pm2是nodejs进程管理工具,可以让node程序持续运行,github star 已有1.8W+,同类型的产品有forever
常用命令
# 常用
npm install pm2 -g # 全局安装PM2
pm2 start app.js # 启动node程序
# 群集模式 (Node.js only)
pm2 start app.js -i n # 开启n个进程
pm2 start app.js -i 0 # 启用最大进程
pm2 start app.js -i max # 启用最大进程
pm2 reload all # 0秒重启
pm2 scale [app-name] 10 # [app-name] 程序开启10个进程
# 进程监控
pm2 list # 所有PM2进程列表
pm2 monit # 显示每个app程序占用存储空间及cpu使用率
pm2 show [app-name] # 显示[app-name]所有信息
# 日志管理
pm2 logs # 显示所有app的日志信息
pm2 logs [app-name] # 显示特定app(app-name)日志
pm2 logs --json # 日志以json格式输出
pm2 flush
pm2 reloadLogs
# 进程状态管理
pm2 start app.js --name="api" # 启动名为api的程序
pm2 start app.js -- -a 34 # 启动程序并传入参数 "-a 34"
pm2 start app.js --watch # Restart application on file change
pm2 start script.sh # 启动脚本
pm2 start app.json # 启动app.json里所有定义的程序
pm2 reset [app-name] # Reset all counters
pm2 stop all # 停止所有app
pm2 stop 0 # 停止id为0的进程
pm2 restart all # 重启所有进程
pm2 gracefulReload all # 以群集模式重新加载所有程序
pm2 delete all # 杀死并删除所有进程
pm2 delete 0 # 删除id为0的进程
# 启动管理
pm2 startup # 检测初始化系统,在启动时生成并配置pm2引导
pm2 save # 保存当前进程列表
pm2 resurrect # 恢复之前保存的进程
pm2 unstartup # 禁用并删除启动系统
pm2 update # 先保存进程,kill PM2后再回复进程
pm2 generate # 生成一个示例json配置文件
在linux环境测试
centos7上启动node demo。
安装pm2
npm install pm2 -g
安装完成后,系统会创建以下目录。
默认隐藏,linux下ls -a
显示
$HOME/.pm2 will contain all PM2 related files
$HOME/.pm2/logs will contain all applications logs
$HOME/.pm2/pids will contain all applications pids
$HOME/.pm2/pm2.log PM2 logs
$HOME/.pm2/pm2.pid PM2 pid
$HOME/.pm2/rpc.sock Socket file for remote commands
$HOME/.pm2/pub.sock Socket file for publishable events
$HOME/.pm2/conf.js PM2 Configuration
启动程序
在项目目录下,执行
pm2 start app.js
查看日志
pm2 logs
控制台输出PM2日志和程序日志信息。同时日志也会输出到相关文件,如PM2日志输出路径/root/.pm2/pm2.log
;
程序日志路径/root/.pm2/logs/app-error-0.log last 15 lines:
/root/.pm2/logs/app-out-0.log last 15 lines:
程序监控
pm2 monit
可以监控进程内存占用空间以及CPU使用率。
重启程序
当项目更新时,如修改路由或配置文件,需要重启。
pm2 restart `id`
更新PM2
首先保存当前所有进程
pm2 save
更新最新版本
npm install pm2@latest -g
更新内存里的进程
pm2 update