上一篇文章主要从理论上分析了Linux的Ext2文件系统。这一篇主要解说怎样查看Linux的文件系统的容量以及解说Linux文件系统中的连接文件。

能够通过df和du命令来查看磁盘与文件夹的容量。df命令用来列出文件系统的总体磁盘容量,df命令的使用方法是 df  [-ahikHTm]  文件夹或文件名称。假设df命令不加不论什么參数,则默认将系统内全部的文件系统的容量以及使用情况都列出来。关于df命令还须要说明的是
df命令是查看文件系统的总体使用情况,因此是从Super block(见前一篇文章)中读取信息,因此df命令的运行速度很快。

下面是df命令的使用举例:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVjaGVuY29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

从图中可以看到,尽管用df命令查看/etc文件夹的使用情况,可是df命令会自己主动分析该文件夹所在的分区,然后将该分区的使用情况列举出来。这里不要犯迷糊,仅仅要不进行磁盘限额,那么/etc文件夹可以使用的容量就是该文件夹所在文件系统的容量。

那假设我就是要看当前/etc文件夹已占用的文件系统容量,那就得通过 du命令。du命令主要用来查看文件夹所占的容量。

不同于df命令,du命令是直接到文件系统内去查看全部的文件系统数据,因此运行时间可能会久一点。关于du命令还是多讲一点。可能鸟哥书上讲的不是非常清楚,du命令默认会显示该文件夹下各个子文件夹的容量,而显示的总文件夹容量是已经将该文件夹下各个子文件夹的容量加和的。

举个样例,如图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVjaGVuY29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

/home文件夹下总共同拥有三个子文件夹: /home/hw , /home/test_one ,/home/fuchencong ,它们的容量(已经算上子文件夹)各自是4k。52k,240k,并且能够查看到 /home 文件夹自己本身(不算子文件夹的容量)是4k。所以终于显示的/home文件夹的容量是 4k + 52k + 240k + 4k= 300k。

另外在使用du命令时。假设加上-S參数,则显示的文件夹容量就不会加上子文件夹的容量,此时仅仅是显示该文件夹本身占用的容量(当然还包含该文件夹下的直接文件),例如以下图所看到的: /home文件夹显示的占用容量为4k,这就是/home文件夹本身所占用的容量,而不包含其子文件夹所占用的容量。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVjaGVuY29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

接下来解说Linux中的连接文件,假设已经理解了Linux的Ext2文件系统,那么理解连接文件就很easy了。

在Linux操作系统中,连接文件分为两种,硬连接(实际连接)和 符号连接。能够使用ln命令创建连接文件,ln命令的用法为 ln [-sf] 源文件 目标文件,假设不加不论什么參数制作连接文件,就是默认创建硬连接,假设加上-s參数。就是代表创建符号连接文件。那硬连接和符号连接有什么差别呢?

上一篇文章已经讲过,Linux读取一个文件时。首先要从文件夹block里找出该文件名称相应的inode号码。那假设同一时候有多个文件名称同一时候相应一个inode号码,那么不管通过哪个文件名称实际上都訪问到同一个文件,事实上这就是硬连接。

简单的说。硬链接仅仅是在某个文件夹下新建一条文件名称关联到某个inode号码的关联记录而已。

当有多个文件名称关联到同一个inode号码。就能够通过当中的随意一个文件名称来訪问该文件的数据,并且不管通过哪个文件名称来改动数据,终于都会改动到实际的文件数据。

类似的。当删除一个文件时,事实上仅仅是将相应的inode里的引用计数-1。并不会真的删除文件数据,仅仅有当该文件inode里的引用计数减为0,该文件数据才会真的被删除。

可是硬连接也是有限制的,由于每一个文件系统都有自己的inode编号。所以文件夹项里文件名称相应的inode号码仅仅能是同一文件系统里的inode号码。因此硬连接仅仅能针对同一文件系统创建。不能跨文件系统建立。并且硬连接也不能连接到文件夹。一方面对文件夹创建硬连接会添加系统环境的复杂度,还有一方面对文件夹创建硬连接easy造成循环。因此不支持硬连接到文件夹。

Linux中另一类连接。称为符号连接。

不同于硬连接。符号连接是创建了一个独立的文件,仅仅只是对这个文件的数据读取会被转向为对它指向文件的数据读取。因此当源文件被删除时。符号连接就会“开不了”。并且对于一个符号连接,它的文件长度就是它所引用文件的文件名称长度,由于在连接文件里,它的内容就是目标文件的“文件名称”。

下面是硬连接和符号连接的一个实例:

图中能够清晰的观察到hard_link 和 test.file关联到同一个inode号码,因此这两个文件代表的是同一个文件,并且引用计数为2。而symbol_link文件的inode不同于test.file,由于symbol_link是一个独立的文件,仅仅只是它是一个指向test.file的连接文件。并且能够观察到symbol_link的文件长度为9字节。事实上就是test.file这个文件的文件名称长度。

最后解说一下关于文件夹的连接数量。每当新建一个空文件夹时,该新文件夹的连接数量为2。

为什么呢?首先文件夹本身占领一个连接,然后该文件夹里另一个特殊文件夹“.”,它也是代表该文件夹。因此该文件夹的连接数量为2。 假设在该新的文件夹里创建一个子文件夹,该文件夹的连接数又将+1。由于新建的子文件夹里有一个特殊文件夹“..”。代表上级文件夹,它也指向该文件夹,因此该文件夹的连接数+1。

本章Linux命令总结:

df, du, ln。

鸟哥的Linux私房菜 基础学习篇读书笔记(9):Linux磁盘与文件系统管理(2)的更多相关文章

  1. 鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)

    本文总结了Linux操作系统来管理我们的硬盘和文件系统需要使用命令.当我们在系统中增加一个硬盘驱动器.什么是我们需要去通过这个硬盘就可以真正使用步骤?下面步骤: (1)对磁盘进行分区,新建能够使用的分 ...

  2. 人体和电脑的关系——鸟哥的LINUX私房菜基础学习篇读书笔记

    CUP=脑袋: 每个人会做的事情都不一样(指令集的差异),但主要都是通过脑袋来判断与控制身体各部分的行动 内存=脑袋中存放正在思考的数据区块: 在实际活动过程中,我们的脑袋需要有外界刺激的数据(例如光 ...

  3. 鸟哥Linux私房菜基础学习篇学习笔记3

    鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...

  4. 鸟哥Linux私房菜基础学习篇学习笔记2

    鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...

  5. 鸟哥Linux私房菜基础学习篇学习笔记1

    鸟哥Linux私房菜基础学习篇学习笔记1 第三章 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用. 所谓的分区只是针对64Bytes的分 ...

  6. 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

    目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...

  7. 每周一书-《鸟哥的Linux私房菜基础学习篇(第四版)》台湾原版,你想要吗?

     首先说明,本周活动有效时间为2016年10月19日到2016年10月31日.   目在介绍这本书之前,首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给玄魂工作室的 ...

  8. 【Linux】鸟哥的Linux私房菜基础学习篇整理(一)

    最近,一直在写PPC的模拟器和汇编器,也在做设计.所以重新看了看<鸟哥的Linux私房菜>,还是有好多命令不太熟悉.就打算写几篇blog记下来. 1. nl [-bnw] filename ...

  9. 《鸟哥的Linux私房菜-基础学习篇(第三版)》(三)

    第2章 Linxu怎样学习         1. Linux当前的应用角色 当前的Linux常见的应用可略分为企业应用和个人应用双方面. 首先谈了企业环境的利用. 1)网络server. 2)关键任务 ...

随机推荐

  1. NIO学习(1)-入门学习

    一.NIO概念 IO:标准IO,也既阻塞式IO NIO:非阻塞式IO 二.NIO与标准IO的IO工作方式 标准IO基于字节流和字符流进行操作 NIO是基于通道(Channel)和缓冲区(Buffer) ...

  2. Linux下可以使用ps命令来查看Oracle相关的进程

    Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [oracle@ www.linuxidc.com ...

  3. Linux中断(interrupt)子系统之三:中断流控处理层【转】

    转自:http://blog.csdn.net/droidphone/article/details/7489756 1.  中断流控层简介 早期的内核版本中,几乎所有的中断都是由__do_IRQ函数 ...

  4. Linux网络状态工具ss命令使用详解【转】

    ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...

  5. mac安装sentry

    最近需要一个日志监视系统所以选择了sentry. 安装docker https://download.docker.com/mac/stable/Docker.dmg 登录 安装完了打开 会提示登录输 ...

  6. 使用OpenSSL自建CA + Nginx配置HTTPS

    Ubuntu 16.04(ECS),OpenSSL 1.0.2g  1 Mar 2016,Nginx 1.10.3 (Ubuntu), 浏览器:Chrome 67,Firefox 61,Edge 40 ...

  7. Android方法引用数超过65535优雅解决

    随着应用不断迭代更新,业务线的扩展,应用越来越大(比如:集成了各种第三方SDK或者公共开源的Library文件.jar文件)这样一来,项目耦合性就很高,重复作用的类就越来越多了,SO:问题就来了.相信 ...

  8. windows下安装apache zookeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  9. ExpressMapper- The New .NET Mapper!

    推荐,据测试比手工映射的效率还高. https://www.codeproject.com/Tips/1009198/Expressmapper-The-New-NET-Mapper

  10. IntelliJ IDEA快捷键:Esc

    the Esc key in any tool window moves the focus to the editor. 任何工具窗口都会将焦点移动到编辑器.