2026年租用 Mac Mini 长期任务进程守护选型:
launchd 与 pm2 对比表及保活、开机自启配置清单
2026年3月25日
RunMini 技术团队
阅读时间:约 7 分钟
7×24 与独立开发者在租用 Mac Mini跑长期任务,核心是进程守护与开机自启。本文用launchd 与 pm2 对比表讲清适用场景、日志、崩溃重启与资源占用,附 plist 清单与轮转要点。帮助、购买、首页;SLA、保活、推理恢复。⚙️🖥️
痛点拆解
- 会话:用户级 Agent 依赖登录上下文,层级选错等于不启动。
- 日志:stdout 长期落盘无轮转易占满磁盘。
- 重启:错误配置会秒级雪崩,须节流与退避。
① 选型决策矩阵
对比进程守护在Mac Mini租用机上的真实取舍(含你要求的四列)。
| 方案 | 适用场景 | 日志 | 崩溃重启 | 资源占用 |
|---|---|---|---|---|
| launchd | 单进程原生、系统级、与开机顺序绑定 | 标准输出错误路径或系统日志;须自配轮转 | KeepAlive 子键加拉起策略;ThrottleInterval 防风暴 | 守护极轻,主要吃业务进程 |
| pm2 | Node、多实例、集群、统一 CLI | 默认 pm2 日志目录,可模块轮转 | autorestart、max_restarts、min_uptime、退避可配 | Node 加常驻守护,内存高于纯 launchd |
结论:少依赖用 launchd;Node 工程化用 pm2;可 launchd 只跑 pm2 resurrect。四列对照表便于评审对齐口径。
② launchd plist 关键字段清单
| 字段 | 作用要点 |
|---|---|
| Label | 唯一名,便于 list、unload |
| ProgramArguments | 二进制路径加参数数组 |
| WorkingDirectory | 固定相对路径基准 |
| RunAtLoad | 加载即跑,常配 KeepAlive |
| KeepAlive | SuccessfulExit、Crashed 控制退出与崩溃是否重拉 |
| ThrottleInterval | 最小重启间隔,防爆刷 |
| StandardOutPath / StandardErrorPath | 落盘路径,须轮转 |
| EnvironmentVariables | LANG、PATH 等;密钥勿明文 plist |
③ pm2 配置与开机
ecosystem 配 instances、max_memory_restart、autorestart、env。pm2 save 后 pm2 startup 生成 launchd 实现开机自启;用户级须会话与 LaunchAgents 路径一致。多实例时总内存别顶满 Apple 统一内存,避免与推理抢带宽。
④ 资源与日志轮转
plist 日志用 newsyslog 或 logrotate;pm2 用 pm2-logrotate 按大小或份数切。磁盘水位与日志目录一起告警,防满盘写坏状态。租用机上建议把日志与数据分卷或分目录配额,便于独立清理不影响系统区。
落地步骤(≥5 步)
- 定用户、工作目录、日志目录并写 README。
- 前台跑通退出码与健康检查再上守护。
- 写 plist 或 ecosystem,勿依赖交互 profile。
launchctl bootstrap或pm2 start,测一轮崩溃恢复。- pm2 用 save 加 startup;纯 launchd 查 RunAtLoad 与层级。
- 配日志轮转与磁盘阈值告警。
可引用参数
- ThrottleInterval:十秒级起,按冷启动加长。
- max_memory_restart:与统一内存和推理任务统筹。
- 日志:分应用、限单文件大小、按日或按大小滚。
⑤ FAQ
能否叠用?
可以:launchd 只拉起 pm2,业务仍由 pm2 管。
SSH 断开停吗?
看是否守护托管;勿依赖 tty 与交互环境。
重启后先做什么?
看 launchctl 或 pm2 status,确认日志在写、无疯狂重启。