/var/log 是磁盘的死亡纪念物。服务器跑了几年,日志轮转配错了,某天一次 4 KB 写入失败,原因是 2023 年的某个 *.log.42.gz 占了一个 inode。清理在概念上很简单,操作上却极其凶险:一个 glob 写错,你删掉了想留的东西。
先列出,不要直接删
先看,再删,永远。CliAI 不会自动删除,但好习惯是先列再 rm。
clai
$ clai 列出 /var/log 下 30 天前的 .log 文件→ find /var/log -type f -name '*.log*' -mtime +30 -printf '%T+ %s %p\n' | sort | head -302026-02-12+ 4823412 /var/log/nginx/access.log.42.gz2026-02-15+ 1240881 /var/log/syslog.4.gz…
列表对了,下一步才是删除:
clai
$ clai 删除 /var/log 下 30 天前的日志文件→ find /var/log -type f -name '*.log*' -mtime +30 -delete[Safety: CAUTION] — 不可逆。按 Enter 执行。
CAUTION 而不是 DANGER,因为路径有边界、谓词具体。rm -rf /var/log 会被判 DANGER,必须显式确认才执行。
备份:保留最近 N 份
常见模式:保留最近 7 份,其它删掉。
clai
$ clai /backups 里保留最近 7 个 .tar.gz,其它删掉→ ls -1t /backups/*.tar.gz | tail -n +8 | xargs -r rm -vremoved '/backups/2026-03-15.tar.gz'removed '/backups/2026-03-14.tar.gz'
tail -n +8 是大家最容易忘的部分。注意 CliAI 加了 xargs -r,避免列表为空时 rm 没参数运行——目录意外干净时正好救你。
DANGER 演示
让你看看:要求做确实有破坏性的事,面板会变红。
clai
┌─ Task ───────────────────────────────────────────────┐│ 删掉 / 下所有一年前的内容 │├─ Command ────────────────────────────────────────────┤│ find / -mtime +365 -delete │├─ Safety: DANGER ─────────────────────────────────────┤│ 跨越文件系统根,会触及 /etc、/var、/usr。 ││ 输入 "yes" 确认。 │└──────────────────────────────────────────────────────┘
分级器基于正则,并不完美——安全分级那篇诚实列出了能抓的和漏掉的。最终防线还是你自己读那条命令。