|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
补一下linux 的知识点:
2 A1 R, e% b4 j. {$ m5 n6 v ~4 u9 _! }6 H% [& S. @
3 S- s# h7 _* S
因为df和du的统计机制不一样。4 h+ q7 x* e' ?4 {+ G) ~0 h
du会把指定目录下所有文件、目录、目录下的文件都统计。是建立在文件系统能看到的的确确是有这样一些文件的基础上的。也就是说我们能在文件系统里面看到的文件才会被du统计。+ k2 ]4 [% [" m) z# l
; m2 \7 W, N1 F) ]- p4 }
1 ~/ ^( N! D7 c: ^' N: R7 k+ K& i6 ~df(df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。): a$ A$ N8 G# q& M( K7 T7 r
这要从程序写文件的方式来谈起,一个进程要向一个文件里面写东西,那么会得到一个pointer,
' h) {1 O6 L4 H/ E然后向指针指向的文件(磁盘区域)写入。假如由于某些原因(也可能人为)被指向的文件被删除了,但是( write call)并不知道文件是否还在,就还会继续向里面写,不管文件是否存在,磁盘块还是被写操作使用。' u8 }/ ]6 S* c. X' u
于是因为文件没有了,所以du统计不到写入的这些磁盘块,但是因为写的进程还在,磁盘空间没有被释放,所以df却能统计到,所以df统计的结果比du大很多。" P4 L' k2 n+ s6 f& N0 }+ z
如何解决呢?
0 U8 H" P o0 N# g+ b3 \. v1.停止系统上的程序。6 H6 M6 e5 x. Y: H' X+ @9 A
2.如果还是不行,unmount一下文件系统看看) [9 {$ u# s, r# K( p: y
3.重启系统
3 ~3 M$ f" {: H) |4 S) Y: U5 H5 ~
1 }/ ^. |6 |8 q/ U
+ T$ z* j+ [" @: u
, @' ^; ]3 j J, z) |( y- x& q4 S4 E
$ c$ Y/ z: O: Z4 v
|
|