PostgreSQL 原生 Windows 服务:为什么不用 NSSM 包一层?

目录 1. 引子:我遇到的问题 2. 什么是 Windows 原生服务 3. PostgreSQL 安装时就已经是原生服务 4. NSSM 是给谁用的 5. 对比:原生服务 vs NSSM 包一层 6. 用 NSSM 包 PostgreSQL 的风险 7. 正确的管理姿势 8. 什么时候才该用 NSSM 9. 总结 摘要:很多人会用 NSSM 把程序包装成 Windows 服务,但 PostgreSQL 天生就是原生 Windows 服务,直接用 Set-Service / Start-Service 管理即可,完全不需要也不应该套一层 NSSM。本文讲清楚两者的定位区别、为什么给 PostgreSQL 套 NSSM 是负优化,以及正确的管理姿势。 核心结论(TL;DR):NSSM 是给"不能自己当服务"的普通程序(脚本、exe)用的;PostgreSQL 安装时就注册成了原生服务,能优雅关库、能被 SCM 直接管理。用 NSSM 包数据库反而会多一层中转、增加非正常退出导致数据恢复的风险。正确做法就是一行 Set-Service + Start-Service。 1. 引子:我遇到的问题 我在博客里写过一篇《Windows 上让 Git 自动同步:NSSM 服务 + 实时监听实战》,里面用 NSSM 把"监听推送 + 定时拉取"的脚本注册成了 Windows 服务,实现了开机自启、崩溃自愈。 ...

August 20, 2026 · 2 分钟 · 276 字

Windows 上让 Git 自动同步:NSSM 服务 + 实时监听实战

目录 1. 引言 1.1 自动化 Git 的介绍 1.2 传统手动推送痛点 1.3 我为何需要自动同步 2. 如何想到这个方案 2.1 背景:Linux 学习带来的启发 2.2 一段经历:用 OpenClaw 部署 NSSM 服务 2.2.1 原因 2.2.2 解决问题 2.2.3 开始执行步骤 3. 思路与方案定型 4. 需求分析 5. 验证方案可行性 6. 列出可行的方案 7. 项目实施的大纲 8. 详细步骤 8.1 一次性准备 8.1.1 在本地建一个仓库 8.1.2 安装 Git 8.1.3 SSH 准备 8.2 底层一步一步是怎么实现的 8.2.1 监听文件变化 8.2.2 事件泵 + 防抖 8.2.3 自动提交推送 8.2.4 服务化(NSSM) 8.2.5 定时拉取 9. 核心脚本设计(PowerShell) 9.1 脚本文件构成 9.2 推送守护脚本设计(git_sync_realtime_xxx.ps1) 9.3 定时拉取脚本设计(change_fetcher_generic.ps1) 9.4 设计上的几个关键决定 10. 遇到的问题与解决方法(最重要的关键部分) 10.1 bat 中文乱码 10.2 SSH 私钥带口令,自动化服务无法使用 10.3 git 的 “dubious ownership” 安全保护 10.4 GitHub 端口 22 被拦截 10.5 服务“已标记为删除”(错误 1072) 10.6 定时拉取间隔写死 10.7 FileSystemWatcher 实时监听不触发 10.8 服务 PAUSED(启动失败循环) 11. 安全设计:主仓库只推送 + 镜像区 11.1 为什么这样设计 11.2 两条线分别怎么做 11.3 安全边界(一定要分清) 11.4 配套安全措施 11.5 结论 12. 验证结果 13. 下载与体验 14. 总结与展望 摘要:本文记录我从“AI 机器人老挂机”的痛点出发,到用 NSSM 把 OpenClaw 网关变成 Windows 服务,再到把“Git 自动同步”做成一个完整工具包并打包发布的完整过程。全文包含:方案对比、详细步骤、核心脚本设计、8 个真实踩坑记录、安全设计、验证结果。全程由我提出需求、检查验证、确定改进方向,代码与排错由 AI 辅助完成。 ...

August 18, 2026 · 10 分钟 · 2058 字
本站访客 · 访问量