- 安装
npm install pm2 -g
- cd到项目目录,执行
pm2 start "pnpm run start:prod" --name myAppName
成功后接口就能在后台启动了
- 由于几次错误使用, 学到了delete和stop
pm2 delete myAppName
pm2 stop myAppName
- pm2重命名AppName没有直接命令,这里的id不是pid就是id。
pm2 restart <id> --name newname
restart之后日志会用原来的名字不如删了重新start
pm2 delete myAppName
pm2 start "pnpm run start:prod" --name myAppName
- 列出所有正在运行的应用程序:
pm2 list
- 列出应用详细信息,可能用到的
error log path,out log path
pm2 describe myAppName
- 出现个保安厅里监控室一样的控制台,没啥用
pm2 monit
- 集群模式,多进程将可以负载均衡,写
max的话开几核由cpu最大数定<processes>可以是'max'、-1(所有 cpu 减 1)或要启动的指定实例数。
pm2 start "pnpm run start:prod" -i <processes>
- 热重载,允许在不停机的情况下更新应用程序,接口还是会挂的跟restart没啥区别
pm2 reload all
- 以后也许能用到在docker内pm2.keymetrics.io/docs/usage/…
CMD [ "pm2-runtime", "npm", "--", "start" ]
- 看日志,log在
$HOME/.pm2/logs下
pm2 logs myAppName
pm2 logs myAppName --lines 1000
pm2 logs myAppName --err
pm2 logs myAppName --out
pm2 logs myAppName --timestamp 2023-12-29-00:00:00
- 启动日志轮换 日志轮转是系统管理中使用的一个自动化过程,当日志文件太旧或太大时,它会压缩、移动(归档)、重命名或删除日志文件(请参阅此处可能还有其他适用的指标)。 新传入的日志数据将转到新的新文件(位于同一位置)。
pm2 install pm2-logrotate
- PM2 可以生成并配置启动脚本,以使 PM2 和您的进程在每次服务器重新启动时保持活动状态。
pm2 startup
会把下面这些配置写入到/etc/systemd/system/pm2-root.service下,在重启系统的时候执行这些命令
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/root/.nvm/versions/node/v16.20.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure
ExecStart=/root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
- 估计是保存正在使用的myAppName列表,跟
pm2 startup配合使用, 存在/root/.pm2/dump.pm2下
pm2 save
- 移除开机启动
pm2 unstartup