|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
补一下linux 的知识点:; K: `2 J0 L+ X2 ? @& Y
) x R0 P) E. |) i+ e+ q8 A2 p2 T6 v* r' s
因为df和du的统计机制不一样。
. w9 R1 Q- r9 K; M5 y1 t6 z2 Fdu会把指定目录下所有文件、目录、目录下的文件都统计。是建立在文件系统能看到的的确确是有这样一些文件的基础上的。也就是说我们能在文件系统里面看到的文件才会被du统计。9 m% M7 S8 t8 A+ D/ K5 {# Q
2 k$ \1 l' q& c* f" h8 n
+ J$ F3 Z i7 n/ Y3 ~( A \
df(df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。):2 D- c& E5 \" U
这要从程序写文件的方式来谈起,一个进程要向一个文件里面写东西,那么会得到一个pointer,& x8 l6 |8 v- s7 Y5 }7 R
然后向指针指向的文件(磁盘区域)写入。假如由于某些原因(也可能人为)被指向的文件被删除了,但是( write call)并不知道文件是否还在,就还会继续向里面写,不管文件是否存在,磁盘块还是被写操作使用。
, T0 W) X3 m3 u/ [% h3 C于是因为文件没有了,所以du统计不到写入的这些磁盘块,但是因为写的进程还在,磁盘空间没有被释放,所以df却能统计到,所以df统计的结果比du大很多。 x7 w: ?4 B- Z$ c9 ^/ E9 ~# L' o. S
如何解决呢?1 M' K0 z' T( s' v1 T
1.停止系统上的程序。
5 j7 n. K( V9 _, Q3 G; m9 s5 Q! A2.如果还是不行,unmount一下文件系统看看
& q- k' x- i- ^3 s- v; i3.重启系统1 g4 S( K' }% k/ A2 h- Y
+ G! r+ D2 O' q8 r7 r
8 [# |2 n i4 p& k& e6 s* k2 c- o/ f1 z8 E9 o/ ]) ~
. q, m8 _; }; t `
]# O3 k' |, u* Q% z1 o$ \0 E; V0 s$ v4 T( S1 G8 g/ b# E' V' A: y6 E3 Y
|
|