- 项目背景:由于某些功能简单的脚本文件并不需要写图形化界面;或者没有时间或精力开发和维护图形化界面(但是这些脚本代码又需要在后台运行,就比如在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
# 默认情况PM2自动重启应用。该命令禁用自动重启功能,即使应用因为崩溃或错误退出
--no-autorestart
# 设置cron定时任务
--cron {定时表达式}
上面的应用启动操作具体怎么写取决于你的使用场景,拿我的使用来举个例子:比如使用PM2启动一个flask代码,并将其命名为 flask_app
pm2 start "C:\Users\QINXIN\AppData\Local\Programs\Python\Python310\pythonw.exe" --name "flask_app" -- "C:\02-文档\python学习\my_toys\18_录音转文本\flask.py" --no-autorestart
- "C:\Users\QINXIN\AppData\Local\Programs\Python\Python310\pythonw.exe"是解释器的具体路径,由于我这里需要python flask代码无窗口运行,所以需要指定使用pythonw.exe来当解释器而非使用python.exe,否则会弹出前台窗口(关闭前台窗口则flask无法运行)
- --name flask_app 是给你的应用命名,方便管理。注意不要写中文,否则后续进程会出错
- -- "C:\02-文档\python学习\my_toys\18_录音转文本\flask.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
重启后自动恢复进程,保存当前 PM2 进程列表的状态到一个名为 dump.pm2 的文件中
pm2 save
恢复之前通过 pm2 save 命令保存的进程列表(通过 pm2 save 命令)如果你在系统重启后需要手动恢复所有进程,可以使用它。
pm2 resurrect
4.PM2 在windows上开机自启动服务
pm2 save
命令用于保存当前pm2中的项目:
- 持久化你的进程列表: 默认情况下,PM2 在重启或者服务器关闭时,不会自动恢复你之前运行的进程。pm2 save 命令会将当前运行的进程列表和它们的配置信息保存到一个 dump 文件(通常是 ~/.pm2/dump.pm2)。
- 下次启动时自动恢复进程: 当你下次启动 PM2 时,PM2会自动加载这个 dump 文件,并启动其中保存的进程。就像一个快照,记录了你当前运行的所有应用以及它们的配置,下次启动时直接恢复到这个快照状态。
同时我们还需要安装 pm2-windows-service 模块,手动配置 Windows 服务来运行 PM2 并使其开机自启动比较繁琐,需要涉及注册表操作,创建服务脚本等等。pm2-windows-service 模块将这些复杂的操作封装起来,提供了一个简单的命令行接口:
- pm2-windows-service 模块可以自动创建一个 Windows 服务,该服务会在系统启动时自动运行 PM2,并且会自动恢复之前使用 pm2 save 保存的进程列表
终端运行以下命令将 pm2-windows-service 安装到全局
npm install pm2-windows-service -g
总结来说,在你的pm2中已经有项目并且用 pm2 save
保存项目之后,当你下次重启windows,pm2-windows-service就会自动重启pm2,然后pm2会自动加载dump中的项目进程。实现项目的自启动管理
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。