有些时候总想了解下文件和目录大小和总空间大小,在linux下,熟练使用如下几个命令可以非常清楚的知道期望知道的内容。
dfdf --help
用法:df [选项]... [文件]...
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。dudu --help
用法:du [选项]... [文件]...
或:du [选项]... --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。 知道了这两个命令后,看完help,差不多就很清楚了,下面举几个例子:
[root@jp1 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 9289080 3851940 4965284 44% /
tmpfs 182252 0 182252 0% /dev/shm
[root@jp1 ~]#
[code]
[root@jp1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.9G 3.7G 4.8G 44% /
tmpfs 178M 0 178M 0% /dev/shm
[root@jp1 ~]#
[/code]加了-h后,显示结果更加符合我们的习惯。
此处发现,此处的短选项-h并不是很多命令熟知的–help的同义词,而是一个新含义的同义词,这个选项对于查看非常有帮助,后面细看。
[root@jp1 ~]# du
4 ./.subversion/auth/svn.ssl.server
8 ./.subversion/auth/svn.simple
4 ./.subversion/auth/svn.username
4 ./.subversion/auth/svn.ssl.client-passphrase
24 ./.subversion/auth
52 ./.subversion
8 ./.ssh
124 .
[root@jp1 ~]#
使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。
这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:–max-depth=,这是个极为有用的参数!如下,注意使用“*”,可以得到文件的使用空间大小。
[root@jp1 ~]# du -h --max-depth=1
52K ./.subversion
8.0K ./.ssh
124K .
[root@jp1 ~]#
[root@jp1 ~]# du -h --max-depth=1 ./*
4.0K ./anaconda-ks.cfg
12K ./install.log
4.0K ./install.log.syslog
[root@jp1 ~]#
注意,-h作为–human-readable在ls下也是有效的:如ls -lh等;[root@jp1 ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 9289080 3851952 4965272 44% /
tmpfs 182252 0 182252 0% /dev/shm
[root@jp1 ~]#
du 统计文件大小相加 。
df 统计数据块使用情况 。
如果有一个进程在打开一个大文件的时候,这个大文件直接被rm 或者mv掉,则du会更新统计数值,df不会更新统计数值,还是认为空间没有释放。
直到这个打开大文件的进程被Kill掉。
我们碰到的问题是,我们在定期删除 /var/spool/clientmqueue下面的文件,但是没有杀掉其进程,所以空间一直没有释放。
使用下面的命令杀掉进程之后,系统恢复。