pm2学习笔记:一个好用的进程守护工具

pm2作为一个nodejs 的进程守护工具,可以用来做 nodejs/python 等其它应用的进程守护工作
更新于: 2024-04-09 11:16:57

安装

# 安装稳定版
npm i -g pm2
# 安装最新
npm install pm2@latest -g
# 配置自己的快捷命令
npm i -S @jswork/ushell-modules-pm2

nohub的方式

这种方式的问题

  1. 不方便
  2. 系统优先级比较低
# 完整
nohup node server.js > server.log 2>&1 &
# 简版
nohub ./yqfw-api-boot &

常见用法

用法代码备注
启动
# 运行 node 程序
pm2 start app.js
# 运行 python3 脚本
pm2 start server.py --interpreter=python3
 
随系统启动
pm2 startup
 
停止
pm2 stop app.js
pm2 stop all
 
从列表中删除
pm2 delete app
pm2 delete all
# 有时候,需要顺便清理掉日志
rm -rf ~/.pm2
 
日志
pm2 logs
 
清除日志
# 清理 pm2.log 里的内容
pm2 flush
~/.pm2/pm2.log
在 type: “module” 的 ESM 场景
mv ecosystem.config.js ecosystem.config.cjs
 

工作中常用的命令

工作中的 pm2 常用截图
pm2 start main.py --interpreter=python3 --name gb:main --namespace gbins
pm2 start detail.py --interpreter=python3 --name us:detail --namespace uniport
pm2 logs
pm2 list
pm2 delete us:detail
pm2 stop all
pm2 start all

配置文件 ecosystem.config.js

# 产生一个配置文件
pm2 init
# 产生一个简单的
pm2 init simple
# 同时启动多个apps
pm2 start ecosystem.config.js --only "api-app,worker-app"

常见服务的 ecosystem.config.js

服务配置
scrapy爬虫-命令
module.exports = {
  apps: [
    {
      name: 'kninfo_detail',
      namespace: 'ncbi',
      // script: 'poetry run scrapy crawl kninfo_detail_chunk',
      script: 'poetry run python spider_knlib/tasks/kninfo_multiple_chunk.py',
      ignore_watch: ['node_modules', 'logs', 'tmp', '*.pyc'],
      cron_restart: '0/10 * * * *'
    }
  ]
};
nodejs 服务
module.exports = {
  apps: [
    {
      "name": "moban-frontend",
      "cwd": ".",
      "script": "npm",
      "args": "start"
    }
  ]
};

参考