问题:
执行tail -f my_file 时报错:No space left on device
df -h 检查磁盘剩余空间,剩余空间都很充足;
df -i 检测iNode使用情况,剩余iNode也很充足;
参考这篇文章解决了问题 tail: cannot watch `/var/log/messages': No space left on device
即调大fs.inotify.max_user_watche
sudo vi /etc/sysctl.conf
# 若已有有fs.inotify.max_user_watches配置则将其调大,没有在在文件末尾新增一行:
fs.inotify.max_user_watches=65536# 使得配置修改生效
sudo sysctl -p
确实解决了问题,但过了一段时间,问题又出现了,再次调大fs.inotify.max_user_watche=655360解决问题,but,又过了一段时间,问题又又出现了。。。。。。。
显然调大fs.inotify.max_user_watche并没有解决根本问题,继续查找资料,查找到这篇博客:如何解决Linux删除文件但是磁盘空间大小并没有释放的问题?_linux删除大文件之后df -h不变-CSDN博客
通过文章中提到的lsof | egrep "COMMAND|deleted" 命令查看,如下图所示,发现果然有大量的标记为deleted的文件占用了大量的NODE,kill -9 pid将这些进程杀死后,将fs.inotify.max_user_watche调小到65536,tail -f也不会报错了,问题完美解决~
lsof | egrep "COMMAND|deleted"