【磁盘与目录容量】
df 命令
df
命令用于列出文件系统的整体磁盘使用量,命令格式为:df [选项] [目录或文件名]
其选项有:
- -a:列出所有的文件系统
- -k:以 KB 的容量显示文件系统
- -m:以 MB 的容量显示文件系统
- -h:以容易阅读的 KB、MB、GB 等形式显示
- -H:以 M=1000K 代替 M=1024K 的进位方式
- -T:连同分区的文件系统名称一起列出
- -i:不使用硬盘容量,而用 inode 数量显示
如下图,将系统内所有的文件系统列出
对于输出的结果信息,各字段含义如下:
- 文件系统:该文件系统是在哪个分区,所列出的设备名称
- 类型:该分区的文件系统名称,由 -T 选项指示
- 1-K 块:数字单位是 1K,可由 -h 或 -T 选项来改变容量
- 已用:已使用的硬盘空间
- 可用:剩余的磁盘空间
- 已用 %:磁盘的使用率
- 挂载点:磁盘挂载的目录所在
需要注意的是,如果使用 -a 选项,系统会出现 /proc
这个挂载点,但所有的字段均为 0,这是因为 /prop
内的文件都是系统所需要加载的系统数据,且挂载在内存中,没有占用任何硬盘空间
du 命令
du
命令用于评估文件系统的磁盘使用量,常用于评估目录所占容量,命令格式为:du [选项] 目录或文件名
其选项有:
- -a:列出所有的文件与目录容量,默认情况下,只统计目录下的文件量
- -k:以 KB 的容量显示
- -m:以 MB 的容量显示
- -h:以容易阅读的 KB、MB、GB 等形式显示
- -s:列出总量,而不列出各目录所占容量
- -S:列出不包括子目录下的总量
如下图,在未加任何选项时,du
命令会自动分析当前目录下文件与目录所占的硬盘空间,但实际显示时,仅会显示目录容量,且默认情况下,以 KB 容量显示
【连接文件】
ln 命令
ln
命令用于连接文件,命令格式为:ln [选项] 源文件 目标文件
其选项如下:
- -s:进行软连接(若不加任何参数,则进行硬连接)
- -f:若目标文件存在时,就主动将目标文件删除后重新创建
硬连接
在 Linux 中,每个文件都会占用一个 inode,文件内容由 inode 的记录来指向,想要读取文件,必须经过目录记录的文件名来指向到正确的 inode 号才可读取
也就是说,文件名只与目录有关,但文件内容与 inode 有关,硬连接就是在某个目录下新建一条文件名连接到某 inode 号的关联记录
举例来说,假设系统存在一个文件名为 /root/crontab
,其是 /etc/crontab
的实际连接,也就是说这两个文件名连接到同一个 inode,自然而然这两个文件的所有相关信息除文件名外相同
如下图所示,可以通过 1 或 2 的目录的 inode 指定 block 找到两个不同的文件名,但无论使用哪个文件名均可以指到 real 所对应的 inode 以读取文件内容
使用硬连接最大的好处就是安全,如果将任何一个文件名删除,其实 inode 与 block 都是存在的,此时可以通过另一个文件名来读取文件内容,此外,无论使用哪个文件名进行编辑,最终都会写入到相同的 inode 与 block 中
但硬连接仅能在单一文件系统中进行,无法跨文件系统,此外,其也无法连接到目录
软连接
软连接又称符号连接,其类似于 Windows 系统下的快捷方式
也就是说,软连接是在建立一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名,由于只是利用文件来做指向操作,因此当源文件被删除后,软连接的文件会无法打开,实际上就是找不到源文件的文件名
如下图所示,由 1 号 inode 读取到连接文件的内容只有文件名,根据文件名连接到正确的目录去取得目标文件的 inode,如果目标文件被删除,那么整个读取环节就无法进行下去