现象: 磁盘空间不足告警,运维人员手工删除日志文件后,磁盘空间仍旧是没有释放出来
原因: 使用 rm -rf *.log 删除日志文件时, 进程仍旧在往日志文件里面写入数据,删除的文件仍旧被进程虎占用着
解决方法:
(1) 通过 lsof | grep deleted
查出来已经删除未被释放的文件,确定占用这个删除文件的进程ID.
(2) 通过 ll /proc/(查出来的进程ID)/fd | grep 未被释放的文件名
查出来文件句柄号
(3) 清除文件句柄的内容释放空间 echo > /proc/(查出来的进程ID)/fd文件句柄号
此操作不会删除文件,而是将文档内容清空的方法释放空间,文件仍存在
建议处理方法:
清理日志文件使用 echo > xxxx.log
或者是 cp /dev/null xxxx.log
又或者是 >xxx.log
再或者是 truncate -s 0 xxxx.log