- 项目背景:由于某些功能简单的脚本文件并不需要写图形化界面;或者没有时间或精力开发和维护图形化界面(但是这些脚本代码又需要在后台运行,就比如在windows直接运行代码需要cmd前台窗口界面或者vscode启动;关掉前台窗口就无法后台运行代码;不关闭前台窗口程序又占用大量内存)所以这使得 PM2 成为一个既高效又易于管理的解决方案。
- 简单介绍:PM2基于nodejs,但是它又可以管理其他类型的代码脚本。并且PM2可以多平台使用
参考资料:
1.PM2的安装
PM2依赖于nodejs,所以我们首先来安装nodejs。由于我的运行平台是windows,所以直接打开官网下载.msi格式安装包。下载之后直接安装即可(记得选择想要的版本和X64)
安装之后,打开终端输入以下命令检查安装情况是否正常,如果能输出版本号,说明 Node.js 和 npm 安装正常
node -v
npm -v
接着终端运行以下命令安装 PM2:
npm install -g pm2
安装之后,打开终端输入以下命令检查安装情况是否正常,如果能输出版本号,说明 PM2 安装正常
pm2 -v
2.PM2的应用启动操作和常规使用例子
先来介绍一下PM2的应用启动操作:
# 给这个任务起名
--name {job_name} 或者 -n {job_name}
# 文件更新时自动重启任务
--watch
# 开启多进程
-i {num}
# 设置应用重新加载的内存阈值
--max-memory-restart <200MB>
# 定义日志路径
--log {log_path}
# 脚本额外参数
-- arg1 arg2 arg3
# 不要自动重启应用
--no-autorestart
# 设置cron定时任务
--cron {定时表达式}
上面的应用启动操作具体怎么写取决于你的使用场景,拿我的使用来举个例子:比如使用PM2启动一个flask代码
pm2 start "C:\Users\HAFEN\AppData\Local\Programs\Python\Python310\pythonw.exe" --name audio_to_text -- "C:\02-文档\python学习\my_toys\18_录音转文本\auido_to_text.py" --no-autorestart
- "C:\Users\HAFEN\AppData\Local\Programs\Python\Python310\pythonw.exe"是解释器的具体路径,由于我这里需要python flask代码无窗口运行,所以需要指定使用pythonw.exe来当解释器而非使用python.exe,否则会弹出前台窗口(关闭前台窗口则flask无法运行)
- --name flask_app 是给你的应用命名,方便管理。
- -- "C:\02-文档\python学习\my_toys\18_录音转文本\auido_to_text.py" 是代码路径,可以指定具体的路径,注意:--后面带有空格,再接代码路径!!
- --no-autorestart 是禁用自动重启功能,即使应用因为崩溃或错误退出。
3.PM2的常用命令
前面提到的PM2的应用启动操作只是PM2命令的一个,其他常用命令还有:
停止应用
pm2 stop flask-app
重启应用
pm2 restart flask-app
删除应用
pm2 delete flask-app
检查 PM2 运行状态
pm2 list
你会看到类似以下的输出,显示你的 Flask 应用正在运行:
┌───────┬────────────┬──────┬─────┬──────────┬───────┬────────┐ │ Name │ id │ mode │ pid │ status │ cpu │ mem │ ├───────┼────────────┼──────┼─────┼──────────┼───────┼────────┤ │ flask │ 0 │ fork │ 1234│ online │ 0.1% │ 20MB │ └───────┴────────────┴──────┴─────┴──────────┴───────┴────────┘
确保 PM2 在系统重启后自动启动
pm2 startup
查看应用日志
pm2 logs
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。