线上大日志,我现在不太敢直接 rm
北侧工程师 · · Field Notes
盘一满,手比脑子快:rm -f *.log。空间经常不降。
后来才把因果记牢:进程还开着那个文件时,你只是把目录项抹了,块还挂在 fd 上。df 照样喊满,du 已经假装没事,人在中间两头骂。
我现在的土办法大概就三步,说出来也不高级:
-
先看谁在写
lsof | grep -E 'log|deleted',确认是业务进程还是某个落单的 sidecar。 -
能截断就截断,能 reopen 就 reopen
有的服务支持 reload 重新打开日志;没有的就计划重启。纯rm只在确定没人占着 fd 的时候干。 -
根子还是轮转
logrotate、按大小切分、限制保留天数。临时救命和长期不复发是两件事,别救完就忘。
还有一次更窝囊:不是 rm,是有人 gzip app.log,原文件没了,进程照写“已删除的 app.log”,盘照样满。从那以后压缩前我都先看有没有进程抓着。
磁盘报警别只配使用率。有余力的话,对 deleted 大文件做个巡检,能少踩几次同一条河。