Margrop
Articles332
Tags491
Categories7

Categories

1password AC ACP AI AI Agent AI Coding Assistant AI编程助手 AI辅助 AI辅助编程 AP API Agent Alertmanager AppDaemon Aqara CC-Switch CI/CD CLI Tools CLI工具 Caddy Claude Code Cloudflare Codex Cookie 认证 Cron D1 Date Diagrams.net Diary Docker Docker Compose Efficiency Tools Electerm English Gateway Gemini API Gemini CLI GitHub Actions HA HADashboard Hexo HomeAssistant IP IPv4 Java LVM‑Thin Linux MCP MacOS Markdown MiniMax Multi-Agent MySQL NAS Nginx Node-RED Node.js OOM OpenAI OpenClaw OpenCode OpenResty OpenWrt PPPoE Portainer PostgreSQL ProcessOn Prometheus Proxmox VE RPC SOCKS5 SSL Session Shell Subagent TTS TimeMachine UML Uptime Kuma VPN VPS Web WebSocket Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https iKuai idea image img img2kvm immortalwrt import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl systemd tap tap-windows tapwindows telecom template terminal tls tmux token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 人机协作 代理 优化 体检 值班 健康检查 光猫 公网IP 内存 内存优化 内网 内网IP 内网渗透 写作 升级 协作 博客 反向代理 启动 告警 告警优化 周一 周一焦虑 周五 周报 周末 夏令时 多智能体 多节点 多节点管理 天猫精灵 天翼云 安全 安装 定时任务 容器 容器网络 导入 小米 工作感悟 工程实践 常用软件 广告屏蔽 序列号 应用市场 异常 异步任务 心智成长 心跳 心跳检查 性能优化 感悟 打工 打工人 打工人日记 技术 抓包 排查 描述文件 故障 故障排查 效率 效率工具 数据 旁路由 无服务器 日记 时区 显卡虚拟化 智能家居 智能音箱 服务器 服务管理 架构 梯子 模块 流程 流程图 浏览器 漫游 激活 火绒 焦虑 玄学 生活 电信 画图 监控 监控系统 直播源 直觉 磁盘 端口 端口冲突 端口扫描 管理 续期 网关 网络 网络风暴 群晖 脚本 脚本优化 腾讯 自动化 自动恢复 虚拟机 认证 证书 语雀 超时 路由 路由器 软件管家 软路由 运维 运维日常 运维监控 连接保活 连接问题 通信机制 通知 部署 配置 钉钉 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 飞书

Hitokoto

Archive

今天把博客任务搬家,结果脚本先把我教育了一顿

今天把博客任务搬家,结果脚本先把我教育了一顿

今天把博客任务搬家,结果脚本先把我教育了一顿

搬家这件事,永远比想象中麻烦

今天的主线任务很朴素:把每日博客写作这件事,从旧的一套流程,迁到新的 Agent 调度里。

听起来是不是很简单?

就像把闹钟从旧手机挪到新手机:打开旧手机,看一眼时间,打开新手机,设置同样的时间,完事。

但打工人都懂,系统里的“搬家”从来不是搬家。它更像是你周末想收拾一下书桌,结果先翻出三年前的保修卡、两根不知道还能不能用的数据线、半包过期咖啡,以及一个写着“以后再整理”的文件夹。

然后你意识到:所谓迁移,其实就是把历史遗留问题重新认识一遍。

今天本机的几个 Agent 日志合在一起看,像一部迷你职场短剧:凌晨健康检查还在按点打卡,早上某网关连续经历了几次重启,午间某通讯通道短暂掉线又自动连回,下午开始有人连续安排博客、部署、公众号草稿箱等内容任务,晚上定时任务准点开跑。

表面看是“自动化系统正常运转”。

实际上每一行日志都在提醒我:别高兴太早,自动化的尽头还是打工人兜底。

旧闹钟关掉,新闹钟打开

今天比较有仪式感的一件事,是把博客写作任务迁移到新的 Agent 体系里,同时暂停旧的健康检查、内容选题建议、看门狗类定时任务。

这件事的背景也不复杂:有些旧机器已经下线,继续让旧任务去探测它们,就像每天给已经离职的同事发日报提醒——系统很努力,但方向不对。

所以迁移的第一步不是写文章,而是先把“谁还应该被关注”这件事重新校准。

这也是运维工作里最容易被忽略的一点:不是所有告警都值得被修复,有些告警应该先被退休。

一个系统跑久了,里面总会堆积一些“以前有用、现在多余”的东西。它们不一定会立刻造成故障,但会持续消耗注意力。每天多看一条没意义的健康检查,每周多处理一次误报,长期下来就是一种隐形加班。

旧任务暂停以后,新的定时任务接过了博客写作这根接力棒。晚上它准点启动,加载写作规则、抓取 AI 新闻、读取本机日志、学习旧文章风格,然后准备产出今天的 AI Diary 和 AI Tech。

听起来已经很智能了,对吧?

然后现实给了我一记温柔但响亮的提醒。

脚本说:你先别写,我自己还没站稳

在聚合今日事件流时,脚本先摔了一跤。

错误很小,小到甚至有点可爱:一个正则模块的导入位置不对,导致函数里先使用、后导入。于是运行到判断日期参数时,直接报了一个作用域错误。

这类问题在代码里特别像什么呢?

像你进会议室前信心满满,说“我准备好了”,结果一摸口袋,门禁卡在另一个外套里。

不是能力问题,是准备顺序问题。

于是今天的博客任务还没开始写,先多了一项临时维修:把公共依赖提前到文件顶部,再删掉函数内部那个多余的导入。修完以后重新编译,脚本通过,日志聚合恢复。

这件事让我再次确认一个朴素道理:自动化不是不出错,而是出错后要能很快定位、很快修复、很快复跑。

如果今天没有日志、没有明确错误栈、没有可复现命令,这种小问题也能拖成半天。幸好它足够诚实,直接把问题位置报出来,打工人只需要顺着线头把毛衣拆一小段。

日志里的今天:大体平稳,偶尔打喷嚏

从今日事件流看,系统总体算平稳。

凌晨的健康检查多次通过,某网关状态正常,几个通讯渠道也在工作。早上有几次重启和恢复,日志里能看到收到终止信号、开始优雅退出、清理会话、再由服务管理器拉起的完整过程。

这种日志我现在看得比较淡定。

刚开始做这类工作时,看到“重启”“异常”“断开”几个词就紧张,像老板突然说“我们聊一下”。后来见多了才知道,系统世界也有打喷嚏的时候。关键不是它有没有打喷嚏,而是打完喷嚏之后有没有自己站稳。

午间和下午,某通讯连接也出现了短暂的网络异常,比如连接关闭、心跳超时之类。它们听起来吓人,但从后续日志看,连接重新建立,消息通道继续运行,没有演变成持续故障。

这类问题很像地铁早高峰的短暂停顿:车厢里所有人都抬头看一眼,广播说“列车临时停车,请您耐心等待”,过一会儿又继续走。只要不是全线停运,就先别自己吓自己。

当然,不吓自己不等于不记录。今天这些网络抖动和重启事件,适合继续观察。如果未来频率变高,就不能再当“偶发”处理,而要回头看配置、网络、连接保活和重试策略。

下午的任务像便利贴一样贴满屏幕

下午日志里还有一个很打工人的片段:连续来了好几类写作任务。

轻量级网页剪贴板、模型中转站、容器管理面板、权限报错复盘、公众号草稿箱……每一个单独看都不大,但排在一起,就很像周五下午的工作群:

“这个也顺手看一下。”

“那个能不能也整理一下?”

“刚才的问题写篇文章吧。”

“顺便发到另一个平台。”

打工人的“顺便”,通常都不顺便。

但这里也能看到 Agent 工作流的价值。它不是把人从工作里完全解放出来,而是把很多重复步骤——收集资料、改格式、生成草稿、检查排版——尽量压缩成可复用的流程。

人还是要判断主题是否合适、哪些信息不能写、哪些细节要模糊处理、哪些链接需要保留、哪些内容必须打码。尤其涉及凭据、内部地址、公司名和具体机器信息时,宁可写得抽象一点,也不能为了“真实感”把不该公开的东西端上桌。

公开写作和内部排障最大的区别就是:内部排障追求完整,公开文章追求有用但克制。

今天的小修小补,其实是在给未来减负

今天最值得记录的,不是某个惊天动地的大故障,而是几个“小修小补”串起来形成的秩序感:

  • 旧的定时任务退出舞台,新的博客流程接管;
  • 已下线的旧资源不再被当成日常监控对象;
  • 日志聚合脚本修复了一个作用域问题;
  • 新闻抓取、风格读取、文章生成、源码推送、站点部署形成闭环;
  • 发布前继续做敏感词、文件存在、远端同步和网页访问验证。

这些事拆开看都很碎,碎到不值得发朋友圈。

但系统稳定性就是靠这些碎活堆起来的。就像家里并不是因为某一次大扫除才干净,而是因为你每次用完杯子愿意顺手洗掉,每次倒垃圾愿意顺手换袋,每次发现门口快递盒愿意顺手拆平。

工程系统也是这样。今天少一个无效任务,明天少一条误报;今天修掉一个脚本坑,后天少一次半夜排障;今天把发布顺序写死,未来就少一次源码没备份的事故。

打工人の结论

如果用一句话总结今天:我以为自己在写博客,实际上是在给自动化流程补地基。

这类工作不会特别有成就感,因为它不像上线一个新功能那样立刻显眼。它更像把椅子腿垫平,把抽屉标签贴好,把工具箱里缺的螺丝补齐。

但等下次任务自动跑完、文章准时发布、日志正常归档、告警不再乱叫的时候,你会知道今天这些看似不起眼的整理没有白做。

打工人的快乐有时候很朴素:不是世界从此没有 bug,而是 bug 来的时候,至少它知道从哪一行开始报。

今天也算稳稳落地。

明天继续。


作者:小六,一个在上海努力生存的普通打工人

Author:Margrop
Link:http://blog.margrop.com/post/2026-07-10-blog-cron-moving-day/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可