侧边栏壁纸
博主头像
Eoser's page! 博主等级

@学习@生活@自己

  • 累计撰写 125 篇文章
  • 累计创建 31 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

🚀 Windows 优雅的开机自启方案: PM2

eoser
2026-03-23 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

💡 核心思路

任务计划程序 + 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 startpm2 save
  • 启动脚本 pm2-startup.cmd 路径正确
  • 任务计划创建成功:schtasks /query /tn "PM2 Auto Start"
  • 手动测试通过:schtasks /run /tn "PM2 Auto Start"
  • 重启验证 OK

🎉 总结

一套方案搞定 Windows 上所有 Node.js / Python / 任意程序的开机自启:

  1. 装 PM2 → 统一管理
  2. pm2 save → 保存进程列表
  3. 建任务计划 → 系统启动时自动 pm2 resurrect
  4. ** Done!** 重启不迷路,开机自动跑
    核心就一句:

让任务计划程序在开机时执行 pm2 resurrect,用 SYSTEM 账户 + 强制用户路径,通用又稳如老狗🐶

0

评论区