工作中碰到的一个实例,df -h和du -sh结果显示差别很大:
[nianzong.dhj@dw113146.cm4 deploy]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.8G 691M 3.0G 19% /
/dev/sda9 869G 1.5G 823G 1% /home
/dev/sda8 3.8G 102M 3.5G 3% /tmp
/dev/sda7 3.8G 3.3G 317M 92% /opt
/dev/sda6 9.5G 1.7G 7.4G 19% /usr
/dev/sda5 9.5G 1.1G 8.0G 12% /var
/dev/sda1 122M 11M 105M 10% /boot
tmpfs 12G 0 12G 0% /dev/shm
[nianzong.dhj@dw113146.cm4 deploy]$ sudo du -sh /opt
572M /opt
从红色字体看相差了2.74GB,经过了解,可能是某进程调用的文件被删除了,使用lsof确认下:
[nianzong.dhj@dw113146.cm4 deploy]$ sudo lsof |grep deleted
java 2466 root 18w REG 8,7 2962787533 961553 /opt/magicloud/jboss-4.2.2.GA/server/default/log/boot.log.bak (deleted)
1_update_ 21903 root 255r REG 8,2 4527 450080 /etc/cron.hourly/1_update_hdmon.cron.hourly (deleted)
sh 29770 root 0u CHR 136,1 3 /dev/pts/1 (deleted)
java 29807 root 0u CHR 136,1 3 /dev/pts/1 (deleted)
大小刚好跟上面丢失的两G多很接近,应该就是删除了这个文件导致的。
要想使两个命令结果显示相等,重启对应的进程即可。可以根据lsof显示的进程2466查找到对应的进程:
[nianzong.dhj@dw113146.cm4 deploy]$ ps aux|awk '$2==2466'
root 2466 0.2 7.7 5745564 1923416 ? Sl Apr27 16:18 java -Dprogram.name=run.sh -Xms4g -Xmx4g -XX:PermSize=1g -XX:MaxPermSize=1g -XX:ParallelGCThreads=2 -XX:+UseParallelGC -XX:+ShowMessageBoxOnError -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/opt/magicloud/jboss-4.2.2.GA/lib/endorsed -classpath /opt/magicloud/jboss-4.2.2.GA/bin/run.jar org.jboss.Main
知识:
阅读(2274) | 评论(0) | 转发(0) |