上一篇文章主要从理论上分析了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)的更多相关文章
-
鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)
本文总结了Linux操作系统来管理我们的硬盘和文件系统需要使用命令.当我们在系统中增加一个硬盘驱动器.什么是我们需要去通过这个硬盘就可以真正使用步骤?下面步骤: (1)对磁盘进行分区,新建能够使用的分 ...
-
人体和电脑的关系——鸟哥的LINUX私房菜基础学习篇读书笔记
CUP=脑袋: 每个人会做的事情都不一样(指令集的差异),但主要都是通过脑袋来判断与控制身体各部分的行动 内存=脑袋中存放正在思考的数据区块: 在实际活动过程中,我们的脑袋需要有外界刺激的数据(例如光 ...
-
鸟哥Linux私房菜基础学习篇学习笔记3
鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...
-
鸟哥Linux私房菜基础学习篇学习笔记2
鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...
-
鸟哥Linux私房菜基础学习篇学习笔记1
鸟哥Linux私房菜基础学习篇学习笔记1 第三章 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用. 所谓的分区只是针对64Bytes的分 ...
-
拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录
目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...
-
每周一书-《鸟哥的Linux私房菜基础学习篇(第四版)》*原版,你想要吗?
首先说明,本周活动有效时间为2016年10月19日到2016年10月31日. 目在介绍这本书之前,首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给玄魂工作室的 ...
-
【Linux】鸟哥的Linux私房菜基础学习篇整理(一)
最近,一直在写PPC的模拟器和汇编器,也在做设计.所以重新看了看<鸟哥的Linux私房菜>,还是有好多命令不太熟悉.就打算写几篇blog记下来. 1. nl [-bnw] filename ...
-
《鸟哥的Linux私房菜-基础学习篇(第三版)》(三)
第2章 Linxu怎样学习 1. Linux当前的应用角色 当前的Linux常见的应用可略分为企业应用和个人应用双方面. 首先谈了企业环境的利用. 1)网络server. 2)关键任务 ...
随机推荐
-
怎么样在Myeclipse中配置JDK?
1.首先电脑上安装JDK 2.打开Myeclipse >> Window >> Preferences 如图1: 图1 2.Preferences >> ...
-
Linux环境下Nginx配置安装PHP
下边的安装配置方法,我试了一晚上没有成功,可能因为我的系统环境比较复杂,所以建议: 先安装PHP.使用yum命令安装,在安装配置MySQL,具体做法看博客中其他文章,至于Nginx服务器可以安装完这两 ...
-
CSS设置DIV背景色渐变
div{ width: 200px; height: 200px; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=, ...
-
beta分工
队伍CleanCode 031302505 黄晓辉(21%) 031302223 翁瀚帅(19%) 031302511 林培兴(22%) 031302632 张衍坤(19%) 0313 ...
-
易通电脑锁2007V6.3.3.3无法卸载问题解决办法
易通电脑锁2007V6.3.3.3无法卸载问题解决办法把原版文件拷贝回去.bat@echo offcolor 2Fecho 该批处理会把易通电脑锁2007版原文件拷贝回去,解决易通电脑锁卸载时出现的运 ...
-
从零开始学习jQuery (六) AJAX快餐
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...
-
坑人的 Javascript 模块化编程 sea.js
坑人的 Javascript 模块化编程 sea.js 忧伤 加 蛋疼的 开始了 看文档 Sea.js 进行配置 seajs.config({ // 设置路径,方便跨目录调用 paths: { 'ar ...
-
C、C++打包成.dll .so .a 给Unity使用
C.C++打包成.dll .so .a 给Unity使用 打包.dll库 工具:VS 使用VS新建项目 选择不大于.NET3.5的版本 选择Visual C++ -> Win32 控制台应用程序 ...
-
MongoDB(课时9 范围运算)
3.2.2.4 范围查询 只要是数据库,必须存在有“$in”(在范围之中).“$nin”(不在范围之中). 范例:查询姓名是“张三”,“李四”,“王五” db.students.find({" ...
-
Android4.0以上版本比较靠谱的获取手机屏幕分辨率的方法
/** * 获取虚拟按键栏高度 * * @param context * @return */ public static int getNavigationBarHeight(Context con ...