考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:操作系统 > Unix > 文章内容
  

Unix系统:UNIX系统下监视磁盘空间和使用情况

 [ 2017年9月5日 ] 【

  使用 du

  du 命令并不是显示磁盘的空闲空间,而是显示磁盘使用情况的信息。du 工具用于确定文件和目录的磁盘使用情况。要使用这个工具,改变到一个目录,然后运行该工具(请参见清单 6)。

  清单 6. du 命令

$ cd /var
$ du
16 ./lost+found
4 ./sadm/install/admin
22 ./sadm/install/logs
28448 ./sadm/install
4 ./sadm/pkg/SUNWocfd/install
4 ./sadm/pkg/SUNWocfd/save/pspool/SUNWocfd/install
16 ./sadm/pkg/SUNWocfd/save/pspool/SUNWocfd
18 ./sadm/pkg/SUNWocfd/save/pspool
20 ./sadm/pkg/SUNWocfd/save
28 ./sadm/pkg/SUNWocfd
4 ./sadm/pkg/SUNWcsu/inst
...

  上面的清单 6 中显示的输出,经过了适当的调整。缺省情况下,du 将显示当前或指定的目录下每个文件和目录的文件使用情况。得到的值是文件的大小,单位为该系统中的缺省块大小,与 df 所使用的单位相同。可能是也可能不是 1K,而使用 -k 命令行选项,您可以强制以 1K 块为单位进行显示。

  您可能需要根据所查看的顶级文件或目录对信息进行摘要。使用 -s 选项以打开摘要视图。下面是 Solaris 安装中的一个摘要版本在 /var 目录中的显示:

$ du -sk  
70818 .

  请注意,它显示了当前目录 (.) 的摘要信息。要获得所有文件和目录的摘要信息,可以使用 * 通配符(请参见清单 7)。

  清单 7. 使用 * 通配符获得摘要信息

$ du -sk *
382 adm
950 apache
683 apache2
6837 appserver
1 audit
162 cache
3 cc-ccr
2 crash
4 cron
31 dmi
22 dt
6 fm
2 imq
1 inet
3 krb5
4 ld
1 ldap
937 lib
6 log
8 lost+found
2 lp
2 mail
1 mysql
1 news
3 nfs
38 nis
2 ntp
10034 opt
1 preserve
96 run
49687 sadm
15 saf
3 samba
2 sma_snmp
131 snmp
39 spool
4 statmon
663 svc
14 tmp
10 uucp
24 yp

  使用该工具时,特别是在用户目录中使用该工具时,请特别小心,因为所显示的信息中不包含隐藏 文件,换句话说,具有单点号前缀的那些文件和目录。您可能希望使用下面的代码行,在用户目录中获得所有的摘要信息:

$ du -sk * .[a-zA-Z0-9]*

  du 命令的最后一个非常有用的选项是 -d,该选项可以防止 du 命令超过文件系统边界。例如,要确定根文件系统而不是任何其他的文件系统的磁盘使用情况,您可以使用 -d 选项:

$ du -dsk /

  有些系统没有这个选项,但是有 -x 命令行选项,该选项仅包含与您所指定的路径相同的设备或文件系统中的文件使用情况。

  查找一个特定用户的磁盘使用情况

  要查找某个用户所使用的磁盘空间,在使用 find 命令的同时,您需要结合使用 du 命令以仅报告特定用户的磁盘使用情况。

$ find . -user mc -type f -exec du -k {} \;

  -user 选项允许您指定 find 将仅报告属于特定用户的文件。-type 选项强制 find 仅返回特定类型(在本示例中是文件)项目的路径,这样可以防止 du 包含目录,因为这些目录可能属于某个用户,但其中却包含了许多用户的文件。然后,对于查找到的每个路径,执行 du 命令以报告磁盘使用情况。

  要获得摘要信息,换句话说,即某个特定用户所使用的总空间,您可以使用 awk 对该信息进行总计,并打印出最后的值:

$ find . -user mc -type f -exec du -k {} \;|awk '{ s = 
s+$1 } END { print "Total used: ",s }'
Total used: 123721

  对于组,您可以根据相同的原则对 find 使用 -group 选项:

$ find . -group mcslp -type f -exec du -k {} \;|awk '{ s = s+$1 } END { print
"Total used: ",s }'
Total used: 542485

  然而,如果启用了磁盘配额,那么就有一种更简单的方法。

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved