问题描述:多次调用脚本通过重定向方式向同一个文件写入大量数据,期间杀死该脚本进程后重新调用脚本,造成查询磁盘空间时当前文件大小和实际占用磁盘空间情况不符。
原因分析:脚本被强制终止(如 kill -9),尤其是当磁盘空间满时强制杀死进程,造成进程未正常关闭文件句柄,即:旧文件句柄泄露。
解决方案:查找未释放磁盘空间的文件对应的进程并将其杀掉。
1. 查看未释放文件相关进程信息。
lsof | grep deleted | awk ‘{print $2, $9, $7}’ | numfmt --field=3 --to=iec --suffix=B
2. 删除进程,释放磁盘空间。
kill -9 ${PID1} ${PID2} ${PID3}…
3. 查看磁盘下各目录空间占用情况。
df -h
排除/home目录下下挂的其他挂载点,如:/home/chkappa、/home/chkappb等
du -h --max-depth=1 --exclude=/home/chkappa --exclude=/home/chkappb --exclude=/home/chkdev --exclude=/home/chksec --exclude=/home/zabbix --exclude=/home/chksys /home | sort -h