问题背景:
在机器上的服务日志没有分天,日志堆积,磁盘被写满,当我直接执行rm 命令删除日志时,执行完之后,发现:
采用df -h 显示的磁盘空间还是满的
采用du -sh 显示已经清理完毕,磁盘空间已经释放了
原因:
使用rm命令删除文件时,只有当文件不存在任何link时才会被删除(没有访问它), 当有进程访问这个文件时,就会存在链路,该线程没有被关闭,文件的实际占用空间就不会被释放
du 是根据文件名进行的空间统计,使用rm时该文件对系统来说已经不可见,所以不会统计这个文件, df则是磁盘实际占用的数量
解决:
使用lsof|grep delete命令查看正在进行删除此文件的进程,可以进程发现没有不会结束,这时可以手动kill 进程,可以发现磁盘会慢慢释放掉