💡 核心思路
用 任务计划程序 + PM2 resurrect,实现:
- ✅ 开机即跑,无需登录
- ✅ 兼容任何应用(exe、脚本、PATH 程序)
- ✅ 不依赖第三方 npm 包
- ✅ 一个命令管理全部
📦 一、安装与准备
# 1️⃣ 装 Node.js(已有则跳过)
# 官网下载:https://nodejs.org/
# 2️⃣ 装 PM2 全局
npm install -g pm2
# 3️⃣ 验证
pm2 --version # 📡 看到版本号即 OK
🎯 二、启动你的应用
# 进入项目目录
cd D:\your\app
# 启动(示例)
pm2 start app.js --name "my-app"
# 再看一眼
pm2 list # 👀 看到 online 就行
# 💾 关键!保存进程列表
pm2 save # 💾 写到 C:\Users\Administrator\.pm2\dump.pm2
⚙️ 三、配置开机自启(核心)
方案 A:自动生成(推荐⭐)
# 生成系统启动命令
pm2 startup systemd # Linux 用这个
# Windows 下用任务计划程序(手动步骤见下)
方案 B:手动创建任务(Windows 通用)
1️⃣ 创建启动脚本(路径随便放,建议 D:\pm2\)
$script = @'
@echo off
set "PM2_HOME=C:\Users\Administrator\.pm2"
cd /d "C:\Users\Administrator"
D:\nodejs\node_global\pm2.cmd resurrect
'@
$script | Out-File -Encoding ASCII "D:\pm2\pm2-startup.cmd"
2️⃣ 创建系统启动任务
schtasks /create /tn "PM2 Auto Start" /tr "D:\pm2\pm2-startup.cmd" /sc onstart /ru "SYSTEM" /f
3️⃣ 验证
# 手动跑一次
schtasks /run /tn "PM2 Auto Start"
pm2 list # 👌 应该看到应用在线
🔄 四、统一管理命令
# 📋 查看所有 PM2 进程
pm2 list
# 🆕 添加新应用
pm2 start "C:\path\to\app.exe" --name "app-name"
pm2 start python script.py --name "py-app"
pm2 start "npm" -- start # 通过 npm 启动
# 💾 每次改动后保存
pm2 save
# 🧹 清理失效进程
pm2 delete all
# 🏃 重启全部
pm2 restart all
# 🛑 停止全部
pm2 stop all
🧪 五、测试与验证
# 1️⃣ 先停掉所有进程
pm2 stop all
# 2️⃣ 模拟开机启动
schtasks /run /tn "PM2 Auto Start"
# 3️⃣ 检查是否恢复
pm2 list # ✅ 全部 online?
# 4️⃣ 真机重启验证
shutdown /r /t 0
# 重启后登录,运行 pm2 list 确认
🔧 六、故障排除
| 问题 | 检查 | 解决 |
|---|---|---|
| 没自启 | 任务是否存在?schtasks /query /tn "PM2 Auto Start" | 重新创建任务 |
| PM2 路径不对 | where pm2 | 修改脚本中的路径 |
| 应用没恢复 | Test-Path C:\Users\Administrator\.pm2\dump.pm2 | 运行 pm2 save |
| 权限报错 | 任务运行账户 | 改用 SYSTEM 或管理员 |
| 查日志: |
# 任务日志
Get-WinEvent -LogName Microsoft-Windows-TaskScheduler/Operational -MaxEvents 20 | findstr "PM2"
# PM2 日志
Get-Content C:\Users\Administrator\.pm2\pm2.log -Tail 50
🎨 七、进阶技巧
1️⃣ 多环境配置
# 开发环境
pm2 start dev.js --env development
pm2 save
# 生产环境
pm2 start prod.js --env production
pm2 save
2️⃣ 开机延迟启动(避免冲突)
修改启动脚本:
@echo off
timeout /t 10 /nobreak >nul # 等 10 秒
D:\nodejs\node_global\pm2.cmd resurrect
3️⃣ 监控日志
# 实时看所有应用日志
pm2 logs
# 单个应用日志
pm2 logs my-app
# 日志文件位置
# C:\Users\Administrator\.pm2\logs\
📊 八、原理与对比
| 方案 | 触发时机 | 依赖 | 难度 | 通用性 |
|---|---|---|---|---|
| 注册表 Run | 登录后 | 无 | ⭐ | 仅当前用户 |
| 任务计划(登录) | 用户登录 | 无 | ⭐⭐ | 任意账户 |
| 任务计划(启动) ✅ | 系统启动 | 无 | ⭐⭐⭐ | 任意应用 |
| Windows 服务 | 系统启动 | pm2-windows-service | ⭐⭐⭐⭐ | 仅 PM2 |
| 为什么推荐任务计划 + 系统启动? |
- 🎯 不依赖任何 npm 包
- 🔧 配置一次,管理所有应用
- 🛡️ SYSTEM 账户权限足,不依赖登录
- 📁 环境变量可控,路径没问题
🚦 九、快速清单
- Node.js 已装
- PM2 全局安装成功
- 应用已
pm2 start并pm2 save - 启动脚本
pm2-startup.cmd路径正确 - 任务计划创建成功:
schtasks /query /tn "PM2 Auto Start" - 手动测试通过:
schtasks /run /tn "PM2 Auto Start" - 重启验证 OK
🎉 总结
一套方案搞定 Windows 上所有 Node.js / Python / 任意程序的开机自启:
- 装 PM2 → 统一管理
- pm2 save → 保存进程列表
- 建任务计划 → 系统启动时自动
pm2 resurrect - ** Done!** 重启不迷路,开机自动跑
核心就一句:
让任务计划程序在开机时执行
pm2 resurrect,用 SYSTEM 账户 + 强制用户路径,通用又稳如老狗🐶
评论区