线上大日志,我现在不太敢直接 rm

北侧工程师 · · Field Notes

盘一满,手比脑子快:rm -f *.log。空间经常不降。

后来才把因果记牢:进程还开着那个文件时,你只是把目录项抹了,块还挂在 fd 上。df 照样喊满,du 已经假装没事,人在中间两头骂。

我现在的土办法大概就三步,说出来也不高级:

  1. 先看谁在写
    lsof | grep -E 'log|deleted',确认是业务进程还是某个落单的 sidecar。

  2. 能截断就截断,能 reopen 就 reopen
    有的服务支持 reload 重新打开日志;没有的就计划重启。纯 rm 只在确定没人占着 fd 的时候干。

  3. 根子还是轮转
    logrotate、按大小切分、限制保留天数。临时救命和长期不复发是两件事,别救完就忘。

还有一次更窝囊:不是 rm,是有人 gzip app.log,原文件没了,进程照写“已删除的 app.log”,盘照样满。从那以后压缩前我都先看有没有进程抓着。

磁盘报警别只配使用率。有余力的话,对 deleted 大文件做个巡检,能少踩几次同一条河。

Replies