1. 开篇暴击:程序在跑,人已疯
家人们,谁懂啊!今天在处理一台阿里云预置的服务器时,遇到了今年最离谱的技术灵异事件:
- 现象 A:访问
http://IP:18789,Moltbot 的控制台跑得飞起,丝般顺滑。 - 现象 B:进 SSH 打算更新一下,输入
moltbot命令——command not found。 - 现象 C:我直接祭出全盘搜索
find / -name "moltbot",结果……空空如也!
那一刻,我甚至怀疑阿里云卖给我的是个云端幻觉。
2. 抽丝剥茧:幽灵是怎么炼成的?
既然程序在跑,那它一定在内存里留下了痕迹。我开始了我的“捉鬼”三板斧:
第一步:端口反查,锁定真凶
既然 18789 端口活着,那就顺藤摸瓜:
netstat -tunlp | grep 18789
结果弹出来一个奇怪的名字:1037/clawdbot-gatew。
破案线索 1:它根本不叫 moltbot,它叫 clawdbot-gateway。
第二步:深入 /proc 目录,直击本体
Linux 不会撒谎,我直接去查 PID 1037 的老底:
ls -l /proc/1037/exe
结果显示:-> /usr/bin/node。
好家伙,原来是个 Node.js 进程!
第三步:终极真相
通过查看启动命令 cat /proc/1037/cmdline,真相大白:
阿里云预置的这个版本,是把源码放在了 /home/clawbot/dist/entry.js,然后通过 Systemd 托管启动的。
由于它不是通过 npm install -g 安装的,也没有配置环境变量,所以你打死也搜不到 moltbot 命令。
3. 剧情大反转:致命的“一个字母”
我本以为找到了路径就大功告成,结果反手就是一个 MODULE_NOT_FOUND。
原因竟然是: 阿里云预置镜像的用户名叫 clawdbot(多一个 d),而我手动输入时习惯性打成了 clawbot。
在 Linux 的世界里,差一个字母就是“生死时速”。
4. 高光时刻:真正的“转正”命令
# 修正那个该死的字母 d
alias moltbot='/usr/bin/node /home/clawdbot/dist/entry.js'
echo "alias moltbot='/usr/bin/node /home/clawdbot/dist/entry.js'" >> ~/.bashrc
source ~/.bashrc
当 moltbot status 那个绿色的龙虾图标(🦞)跳出来时,我知道,这个幽灵终于被我驯服了。
5. 避坑指南
不要相信你的直觉:find 搜不到可能是因为你在搜 A,而系统里它叫 B。
别名(Alias)是救命稻草:对于非标准安装的服务,别名能让你的操作瞬间回到“标准姿势”。
阿里云预置包特征:路径通常在 /home/clawdbot,由 Systemd 托管,名字可能被重写。
看完顺手点个赞,服务器永远不宕机!