磁盘已满但 du -h 文件和目录的磁盘使用空间并不大的原因
今天一台 freebsd 服务器 df -h
显示磁盘利用率已 100%
,奇怪的是在 /
目录用 du -h
排查大文件时,文件和目录磁盘使用空间只有不到 3Gb
。
于是在网上查找原因
占用文件的进程还在运行,导致删除的文件不能被释放。比如删除了日志文件,但是生成日志文件的程序还在运行中,导致即使删掉了日志文件也不能释放这些文件的磁盘空间。
解决办法是一、重新启动占用文件的进程,二、重启服务器。第一种方法由于对 freebsd 不熟悉,所以这里没有对大家有所帮助的经验分享。
后记:因为查到的原因是nginx日志文件占用,所以用命令
kill -USR1 pid(nginx的pid)
解决的
那么正确释放一些被进程占用的大文件空间的姿势,如最常见的日志,应该是清空日志 echo "" > access.log
。
回顾 nginx
的基础,当我们切割日志时
mv $LOGPATH $BACKPATH/$(date +%Y%m%d_%H%M).access.log
这样只把日志文件移走,其实 nginx
对该文件的占用还在,那么接下来应有这样的操作
kill -USR1 `cat /www/server/nginx/logs/nginx.pid`
kill -USR1
在手册里是这么描述的
最后补充 df -h
和 du -h
的区别:du
disk usage
显示每个文件和目录的磁盘使用空间,也就是文件的大小
df
disk free
显示磁盘分区上可用磁盘空间
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: