# pm 2 > 用于生产环境的 Nodejs 的进程管理工具 > **保证服务不会中断**一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能 > 内置一个负载均衡 官方: [PM2 - Quick Start](https://pm2.keymetrics.io/docs/usage/quick-start/) ## 常见命令 ### 启动 ```sh # 启动app.js应用 pm2 start app.js # 启动应用并设置name pm2 start app.js --name 程序名 # 开发模式启动,即不启用后台运行 pm2-dev start ... ``` ### 监视 监听模式启动,当文件发生变化,自动重启 ```sh # 指定程序名的情况下 pm2 start app.js --name 程序名 --watch # 未指定程序名的情况下 pm2 start app.js --watch ``` ### 进程 ```sh # 列出所有进程 pm2 list # 简写 pm2 ls # 从进程列表中删除进程 pm2 delete [appname] | id # 指定进程名删除 pm2 delete app # 指定进程id删除 pm2 delete 0 # 删除进程列表中所有进程(关闭并删除应用) pm2 delete all # 查看某个进程具体情况 pm2 describe app # 监控各个应用进程cpu和memory使用情况 pm2 monit ``` ### 重启 ```sh # 同时杀死并重启所有进程,短时间内服务不可用,生成环境慎用 pm2 restart app.js # 重启所有进程 pm2 restart all # 重新启动所有进程,0秒重启,始终保持至少一个进程在运行 pm2 reload app.js # 以群集模式重新加载所有应用程序 pm2 gracefulReload all ``` ### 日志 ```sh # 根据指定应用名/应用ID查看应用日志 pm2 logs [Name|ID] # 查看所有进程的日志 pm2 logs all # 显示指定应用详情 pm2 show [Name|ID] # 清除日志 pm2 flush ``` ### 停止 ```sh pm2 stop [AppName|ID] pm2 stop all ``` ### 杀死所有进程 ```sh pm2 kill ``` ### 静态服务器 ```sh # 将目录dist作为静态服务器根目录,端口为8080 pm2 serve ./dist 8080 ``` ### 集群 ```sh # 启用群集模式(自动负载均衡) # -i 表示 number-instances 实例数量 # max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量 pm2 start app.js -i max ``` ### 设置开机启动 ```sh # 可选项:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon pm2 startup centos # 按提示输入命令,最后保存 pm2 save pm2 unstartup centos ``` ### pm2定时任务 ```sh pm2 start main.py --name mihoyo --interpreter=python3 pm2 logs mihoyo --lines 1000 pm2 flush appname ``` ```json { "apps": [ { "name": "ssr", "script": "main.py", "interpreter": "python3", "cron_restart": "0 23 * * *", "autorestart": false, "watch": false } ] } ``` ## 开机启动 ```sh # 保存当前状态 pm2 save # 生成启动命令 pm2 startup # 执行命令 # 取消开机启动 pm2 unstartup systemd ``` ## 不自动重启 ``` --no-autorestart ``` ## nodejs服务运行后结束 ```json { "apps": [ { "name": "189checkin", "script": "src/app.js", "cron_restart": "0 23 * * *", "autorestart": true, "max_restarts": 1 } ] } ```