一台 2C / 1.8G 内存 / 40G 磁盘的阿里云 ECS,承载 Hermes Agent、量化系统、数据管道、文档处理等多个项目。本文全景式记录运维体系:服务架构、定时任务、备份、安全、更新策略与工程教训。
一、机器概况
- 配置:2C / 1.8G 内存 / 40G 磁盘(阿里云)
- 系统:Linux 5.10.134-19.6(Alibaba Cloud Linux 3)
- 角色:单机多职——Hermes 主控 + 量化 + 数据工程 + 文档处理
- 磁盘现状:40G,峰值 69%(26G 已用 / 12G 可用),kline_cache.db 占 3.9G
二、服务架构
| 服务 |
说明 |
状态 |
| Hermes gateway |
消息中枢,手动启动(无 systemd unit) |
运行中 |
| hermes-dashboard |
Web 控制台(9120 端口,systemd) |
运行中 |
| quant-screener.service |
量化分析服务(systemd) |
运行中 |
| quant daemon |
数据采集守护(PID 689) |
运行中 |
| cloudmonitor / aegis |
阿里云监控/安全组件 |
运行中 |
三、定时任务体系(15 个 cron)
3.1 纯脚本组(no_agent,零 token,常开)
| 任务 |
时间 |
功能 |
| 早晚新闻聚合 |
6:00 / 21:00 |
财经新闻汇总推送飞书 |
| 冷数据归档 |
周日 3:00 |
OSS 低频存储转移 |
| 每日安全扫描 |
22:00 |
登录记录/密钥/异常进程 |
| 每日全面备份 |
23:55 |
配置+数据+源码打包 |
| anti-stray-dashboard |
30 分钟 |
Dashboard 存活守护 |
| 新闻采集 hourly |
每小时 |
量化新闻增量入库 |
3.2 Agent 组(消耗 token)
| 任务 |
时间 |
说明 |
| 每日反思与记忆强化 |
23:40 |
消化对话 → 写记忆 → 自我审视 |
| Skill/Profile 治理 |
周日 3:15/3:30 |
skill 盘点合并 / profile 健康 |
| IMA 知识库同步 |
8:00 |
IMA → OSS 文档同步 |
| oss-daily-sync |
2:00 |
量化数据 OSS 同步 |
| 量化采集/训练/报告链 |
18:30-19:45 |
交易日收盘闭环 |
3.3 no_agent 模式要点
- 非空 stdout 自动投递,空输出静默——「watchdog 模式」,适合阈值告警
- 长任务日志重定向(
> /tmp/*.log 2>&1),避免二进制污染投递
- 例:
news_v2_hourly.sh = 采集(日志落盘)+ stats(投递摘要)
- 纯脚本任务不受峰谷调度限制——不花模型钱就不怕高峰
四、备份体系
4.1 层级
- 每日全面备份(23:55):Hermes 配置 + 量化数据 + 源码
- OSS 三桶:备份桶 / 资料桶 / 量化数据桶(IA 低频)
- 变更前手动备份:升级/改配置前
backup_pre_update/ 快照(config.yaml / .env / sshd_config 三件套)
- git 版本控制:quant-screener 全量留痕(132 个 py 文件)
4.2 关键备份清单
- config.yaml / .env / sshd_config 三件套(备份目录 backup_pre_update/)
- 源码完整备份(hermes_agent_backup_20260802,2.4G)
- 模型注册表 + 数据文件(kline_cache.db 3.9G 定时 OSS 同步)
五、安全体系
- SSH 加固(禁 root / 禁密码 / 仅公钥)——详见《安全加固》篇
- 每日安全扫描 cron(22:00,登录记录/密钥/异常进程)
- 密钥 immutable 锁定防写入(0 字节 + chattr +i)
- 阿里云安全组 + 蠕虫告警监控(误报判定见安全篇)
六、更新策略
6.1 分级更新
- 普通包:立即更新(
dnf update --exclude='kernel*' --exclude='kernel-headers*')
- 2026-08-02 更新 62 个普通包(含 redis/vim/glib2/libxml2 等安全更新)
- 内核:推迟到维护窗口(重启中断采集)
- 剩余 9 个内核包(19.6 → 19.7.1):kernel/kernel-core/kernel-devel/kernel-headers/kernel-modules/…
6.2 维护窗口约定
内核更新(9 包)+ gateway 重启(启用 responseAPI)一次做完。备份先行(backup_pre_update/)。
6.3 更新流程
1
| 备份关键配置 → dnf update(排除内核)→ 验证服务状态 → 内核留待窗口
|
验证项:sshd/redis active、gateway PID 不变、quant daemon 运行中、磁盘余量。
七、Dashboard 运维
- hermes-dashboard(9120)承载 Web 界面,systemd 服务
- 多个修复脚本应对反复故障:fix-dashboard / force-restart-dashboard / restart-gateway / webui_daily_restart
- anti-stray-dashboard 每 30 分钟检查存活,防呆守护
- 配套:cleanup-dashboard / cleanup-user-dashboard 清理脚本
八、工程教训
8.1 磁盘管理
40G 磁盘,峰值 69%。规则:
- 长任务日志落 /tmp(不进项目目录)
- 下载流式处理(下→传→删,不落本地)
- 定期清理:归档死代码脚本(archive_20260811/ 50 个文件)、tempfile 用完即删
8.2 终端纪律
- pkill -f 宽泛模式禁用(曾自伤,exit -15/-9 多次)——自杀式教训
- systemctl 可能卡死(exit 124 先例)——操作前评估,必要时 timeout 包裹
- 复杂内联引号命令被解析器硬拦(BLOCKED hardline)——改写为文件输出再 search_files
- 长任务用 background=true + notify_on_complete,禁止仅后台不等待(静默丢失根因)
8.3 内存约束(1.8G)
- 模型训练子进程隔离 + 定期 gc(见量化篇)
- ClamAV 跑不动已卸载(改用外部扫描)
- 大数据处理分批(下载流式、训练分批)
九、数据资产盘点
| 资产 |
位置 |
规模 |
| 量化行情库 |
/opt/quant-screener/kline_cache.db |
8,488 标的 / 3.9G |
| 新闻库 |
news_db_v2.db |
11 万+ 条 |
| 模型库 |
models_custom/ |
60+ 版本(v3 每日迭代) |
| 课程数据 |
OSS 双桶 |
724 对象 / 86.6GB |
| 会话历史 |
~/.hermes/sessions/ |
44+ 次(含 cron 会话) |
| Hermes 目录 |
~/.hermes |
3.7G(含源码 2.4G) |