别再 rm 日志了:Linux 安全清空日志的正确姿势
阅阅界编辑部2阅读2分钟
磁盘告警一响,很多人第一反应是 rm 日志文件,结果空间没释放,服务还可能写丢。这篇把安全清空日志的正确姿势讲透,照着做,不断写入、不丢数据。
先说结论:正在被写的文件不能删,只能截。rm 删的是文件名,进程手里还攥着句柄,空间照样占着。正确动作是把文件截短,让写文件的进程无缝继续。记住这句,半夜救火不慌。
最常用的就是截短三选一。冒号重定向最顺手,一行命令清空当前日志;truncate 命令语义最清楚,还能指定大小;echo 空写适合要留一行标记的场景。三者效果一样,选你记得住的那个,关键时刻别现查文档。
还有两种情况要分清。日志在疯狂刷屏时,先看是谁在写,必要时先停掉或调低级别再清,否则刚清完又满。第二种是删错了已经 rm 的情况,别重启服务赌运气,先用句柄找回数据,再重建文件。顺序错了,数据就真没了。多说一个新手常问的:能不能写个定时任务每天自动清?能,但别对业务日志这么干。自动清治标不治本,哪天把排查问题的关键记录清掉了,省下的磁盘换来的是两眼一抹黑。定时任务只适合清明确可再生的临时文件,业务日志的老去,交给切分和归档,别交给删除。
真正省心的是让日志自己转。用 logrotate 按天按大小切分,配好保留份数和压缩,磁盘永远有余量。再配一个磁盘水位告警,超过七成就提醒,留出白天处理的时间。救火再熟练,也不如不起火。
今天就做两件事:把你最常用的那台机器的日志目录看一遍,确认 logrotate 配了没;把截短命令记到你的运维小抄里。下次告警响起,你会感谢今天这五分钟。 来源|博客园 jyzhao《别再 rm 日志了:Linux 下安全清空日志文件的正确姿势》,https://www.cnblogs.com/jyzhao/p/23200588.html
评论(0)
暂无评论,来抢第一条。