跳到主要内容

一个蠢报错,卡了我小一个礼拜

夜班大鹏
夜班大鹏

· 阅读约 2 分钟

凌晨两点多,告警刚消停,趁着这会儿记一笔上周那件丢人的事。本来不想写的,太蠢了,但憋着难受。

上周三,不对,上周二的后半夜,我把那个磁盘巡检的老脚本用 AI 重写了一版,原来是一台一台串着跑,慢,重写之后并发跑,ssh 分发到各台机器上。写完在本地试了两台,没问题,就挂上定时了。

第二天晚上跑起来,跑到第三台,终端里蹦出来一行:

sh: df: command not found

后面几台全是这个,前两台正常。我当时第一反应是第三台机器有毛病,登上去手敲 df,好好的,空间也正常。这就有点怪了。

我以为是 ssh 非交互式环境 PATH 不全,这种事常见,就在脚本里加了 source /etc/profile,没用。又想是不是 login shell 的事,改成 bash -lc,还是那句 command not found。

说到这个,中间我还干了个蠢事,我把脚本后半段贴给 AI,让它帮我看,它挺认真地给我分析了一堆,说非交互环境变量加载不全,建议我给每个命令加绝对路径。我照做了,把 df 改成 /bin/df,报错没了,结果脚本输出全是空的,因为后面 awk 也没了、sed 也没了、sort 也没了。我还在那一个一个加绝对路径,加到第七个的时候我才反应过来,这不对,这不是一台机器的事,是我自己把 PATH 弄没了。

翻回脚本前半段,第十八行,我写了个变量存日志目录,起的名叫 PATH。

PATH=/data/ops/inspect

下面所有命令全找不着了。前两台为什么没事,因为那两台网络不通,脚本超时直接跳过了,压根没走到后面去,这个才是最坑的,让我一直以为是个别机器的问题。

把那个变量名改成 LOG_DIR,一秒钟,好了。

就这么个事。卡了我小一个礼拜,中间还加了两天班,白班的兄弟交接的时候问我那个巡检脚本啥时候能上,我说快了快了,其实是在跟一个变量名较劲。

我也不是怪 AI,我贴片段给它,它只能在我给的框子里猜,那行赋值在最前面,我自己都没往那儿看,它更看不见。后来我改了个规矩,报错先自己从头到尾把脚本看一遍,再去找它,不过这个也不算规矩,就是……算了,说出来像检讨。

咖啡第三杯了,四点还有个巡检,先这样,眯一会。

夜班大鹏
夜班大鹏

运维,常驻夜班。凌晨的机房很安静,适合写点东西。

查看主页 →