通常,UNIX® 管理员都拥有一套常用的辅助进程管理的实用工具、技巧和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,而大部分的技巧则来源于长期的经验积累和减轻系统管理员的工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。

入门:使用 df

监视磁盘空间是 UNIX 管理员的工作中很重要的一部分。本文向您介绍一些完成管理工作所需的工具,包括 df、du、find 的使用,甚至配额的使用。让我们先来看看 df 的强大功能。

对于许多管理员来说,使用 df 工具可能有点像断续的神经运动,因为它通过一个命令提供了所有文件系统中已使用的和可用的存储空间的快照视图。根据您的 UNIX 环境的不同,df 的缺省输出可能包含各种不同的信息。

大部分现代的 df 变种都可以显示磁盘空间、使用情况和可用性,通常还包括装入点(有时包括设备)。例如,基于 BSD 的 Mac OS X 显示如清单 1 所示的信息。

清单 1. Mac OS X 的缺省磁盘空间信息
 

Filesystem    512-blocks      Used     Avail Capacity  Mounted on
/dev/disk0s2 268435456 119741344 148182112 45% /
devfs 195 195 0 100% /dev
fdesc 2 2 0 100% /dev
<volfs> 1024 1024 0 100% /.vol
清单 2. 使用带 -k 选项的 df 命令
$ df -k
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/disk0s2 134217728 59870704 74091024 45% /
devfs 97 97 0 100% /dev
fdesc 1 1 0 100% /dev
<volfs> 512 512 0 100% /.vol
/dev/disk0s3 21737260 3625724 18111536 17% /Volumes/Untitled

有些变种可能还支持可选的块大小,如兆字节(使用 -m)和千兆字节(使用 -g),如清单 3 所示。


清单 3. 使用带 -g 选项的 df 命令
$ df -g
Filesystem 1G-blocks Used Avail Capacity Mounted on
/dev/disk0s2 128 57 70 45% /
devfs 0 0 0 100% /dev
fdesc 0 0 0 100% /dev
<volfs> 0 0 0 100% /.vol
/dev/disk0s3 20 3 17 17% /Volumes/Untitled

很显然,在增大显示的块大小的同时,信息中的详细级别也开始降低,但使用可选的大小是一种快速监视磁盘,特别是超大容量磁盘的很有用的方法。其他版本的 df 工具(特别是 Solaris),缺省情况下将报告空块和文件可用性信息。大部分文件系统都具有能够存储文件的上限数值(该数值很大,以至于通常不会达到该上限),所以有可能整个系统填满了文件,还有可用磁盘容量但却不能再存储任何文件了。

您可以在清单 4 中看到 Solaris 的缺省输出示例。


清单 4. Solaris 的缺省输出
$ df
/ (/dev/dsk/c0t0d0s0 ):14877208 blocks 914042 files
/devices (/devices ): 0 blocks 0 files
/system/contract (ctfs ): 0 blocks 2147483618 files
/proc (proc ): 0 blocks 16109 files
/etc/mnttab (mnttab ): 0 blocks 0 files
/etc/svc/volatile (swap ): 5737216 blocks 147177 files
/system/object (objfs ): 0 blocks 2147483532 files
/usr (/dev/dsk/c0t0d0s3 ): 9076010 blocks 863695 files
/dev/fd (fd ): 0 blocks 0 files
/var (/dev/dsk/c0t0d0s4 ): 8110796 blocks 483714 files
/tmp (swap ): 5737216 blocks 147177 files
/var/run (swap ): 5737216 blocks 147177 files
/export/home (/dev/dsk/c0t0d0s7 ):69362510 blocks 4272812 files

使用 -k 命令行选项可以将显示内容切换为与前面的示例类似的格式,其中对数据进行了摘要处理,得到更加便于阅读的格式(请参见清单 5)。


清单 5. 使用 -k 选项
$ df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7644629 206026 7362157 3% /
/devices 0 0 0 0% /devices
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 2868600 1016 2867584 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
/dev/dsk/c0t0d0s3 8261237 3723232 4455393 46% /usr
fd 0 0 0 0% /dev/fd
/dev/dsk/c0t0d0s4 4130238 74849 4014087 2% /var
swap 2867584 0 2867584 0% /tmp
swap 2867624 40 2867584 1% /var/run
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home

所有的 df 变种都接受一个目录或路径,然后显示包含该路径的文件系统的磁盘空间信息。例如,下面显示了应该如何获得根文件系统的空间信息:

$ df -k /
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7644629 206026 7362157 3% /

或者,下面使用 df 显示了一个用户的 home 目录的空间信息:

$ df -k ~mc
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home

使用 df 的输出

df 工具实际上是 disk free 的缩写,并且这也正是该工具所显示的内容。如果再次查看某个示例输出,您可以从中提取一些特别重要的元素:

Filesystem             kbytes    used    avail capacity  Mounted on
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home