pm2学习笔记:一个好用的进程守护工具
pm2作为一个nodejs 的进程守护工具,可以用来做 nodejs/python 等其它应用的进程守护工作
安装
# 安装稳定版
npm i -g pm2
# 安装最新
npm install pm2@latest -g
# 配置自己的快捷命令
npm i -S @jswork/ushell-modules-pm2
nohub的方式
这种方式的问题
- 不方便
- 土
- 系统优先级比较低
# 完整
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 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"
}
]
};
|
参考