Linux的链接档、目录结构与文件系统

1、Linux 下的连接档种类

Linux 下的连接档有两个种类。一个是类似于 win 电脑的快捷方式,称为软连接,软连接也可以叫做符号链接。另一种是通过文件系统的 inode 连接来产生的,类似于 win 电脑的复制,但是不产生新的文件,称为硬链接。硬链接也可以称作为实体连接。

2、 什么是 inode

inode 也叫做索引节点,内核为每一个新创建的文件都会分配一个索引节点,就是 inode 。inode 是用来存放文件信息的,每个文件都会占用一个 inode ,并且这个 inode 号是唯一的,可以把inode 简单的理解为一个指针,它永远指向本文本的具体存储位置,文件的属性保存在 inode 里,系统是通过 inode 而不是文件名来定义每一个文件的。文件的内容都是 inode 来指定的而不是文件名,当系统要访问文件时,inode 就会被复制到内存,从而实现文件的快速访问,使用 ls -i 命令则可以看到 inode号。

-i 参数为打印文件的 inode 号

使用 ll -i ,是一样的。

3、什么是硬连接

硬连接是一个新的链接到某个 inode 号码的记录。这个链接指向 inode ,系统并不给他从新分配inode 。也就是说会有多个文件对应同一个 inode ,如果两个文件的 inode 一样,那么这两个文件就是完全一样的。可以用 ln 命令来建立硬链接。格式: ln 源文件 目标文件

常用参数 -f ,就是说强制创建,无论目标文件是否存在都要创建连接。

创建文件 test1.c,touch test1.c 然后创建一个硬链接,ln test1.c test2.c 然后用 ls -li 命令来

查看下,如下图所示。

test1.c 和 test2.c 的 inode 号码都是 655453 。因为 inode 号一样,所有这两个文件的权限和属性也是一摸一样的,也是 test1.c 和 test2.c 是两个完全一样的文件。

连接数也由 1 变成了 2 ,这个代表的是有多少个档名链接到了这个 inode 号。再创建一个硬连接。使用 ln test1.c test3.c -f 命令后,则会发现这个连接数从 2 变成了 3,如下图所示。

4、使用硬连接的优缺点是什么?

优点:第一是方便,虽然类似于 win 的复制,但是通常并不占用实际空间。而且不管修改 test1.c 或者

是修改 test2.c 还是 test3.c ,只要修改一个,件就会被同时修改,因为inode 号都是相同的。

修改 test3.c 的内容为下图所示:

test1.c 和 test2.c 的内容也被修改成了 nihao,如图所示。

第二是安全,防止误删除。删除 test1.c 或者是 test2.c 或者 test3.c 任意一个,可以通过剩下的连接来访问文件,除非都删掉。利用这个特点来做文件的备份。

删掉 test1.c 使用 rm test1.c。但是 test2.c 或者 test3.c 还是可以访问到 “nihao”这个内容。输

入 cat test2.c cat test3.c

缺点:

第一,只能在同一个文件系统才可以创建硬链接(因为不同的文件系统管理方式不同),甚至有的文

件系统没有索引号,它不是索引文件系统。哪怕有索引号,两个文件系统的索引号含义不一定是相同的,

即使它的索引号相同,连接几个文件,有相同的 inode ,但是不同的文件系统中也有可能使用该inode 的其他文件,这样就会发生冲突,所以只能在同一个文件系统中才能创建硬链接。

第二,目录之间不能创建硬链接。如果说硬链接到目录,那么连接的数据需要连同被连接目录下所有数据都要创建硬链接,如果将根目录下的 etc 用硬链接创建一个硬链接的目录,那么不光是文件要被创建,这个文件下面所有的文件名都要创建一个硬链接,这样会给工作环境造成一个很大的工作量,而且非常的复杂,现在还不支持。

5、 什么是软连接

这类似于 win 上的快捷方式。可以用 ln 命令来建立软链接。

格式: ln -s 源文件 目标文件 (必须加上-s 参数,使用 ln 如果不加任何参数的话,那么就是 Hard

Link ,而且源文件要用绝对路径

-s 为创建一个软连接。源文件必须使用绝对路径,不能使用相对路径,如果使用相对路径的话,想对文件进行一个移动或者复制,那么绝对会出问题。给 test3.c 这个文件创建一个软连接,

ln -s /home/topeet/test/test3.c test1.c

上图中我们可以发现 test1.c 和 test3.c 的 inode 号是不一样的,所以这两个文件是完全独立的,总之

软连接就是创立了一个新的文件,当访问这个链接文件的时候,系统就会发现他是一个链接文件,然后读

取链接文件找到真正要访问的文件。因为类似于 win 上的快捷方式,删掉源文件 test3.c ,那么 test1.c 就不能打开了,红色背景代表无效。软连接虽然没有硬连接安全,但是限制少,使用范围很广泛的。

ubuntu 系统中各个文件的颜色含义:

蓝色:文件夹, ls -l 或 ll 时可以看到权限部分的第 1 个字母是 d

红色:压缩文件

绿色:可执行文件

白色:文本文件

红色闪烁:错误的符号链接

淡蓝色:符号链接

黄色:设备文件

灰色:其他文件

6、linux 目录结构

Linux整个文件系统是从/目录开始的。

为了解决不同的开发人员之间不统一的问题,文件层次标准简称FHS,全称filesystem hierarch standard.

FHS 定义了两层规范:第一层是 / 目录下面文件夹要存放什么文件,比如说 /etc 下面就应该放配置

文件, bin 或 sbin 下边就应该放可执行文件。第二层规范是针对 linux 下 /usr 和 /var 这两个目录的子

目录来定义的。比如 /usr/share 下面就应该放共享数据文件,

FHS 仅仅给出了最上层顶目录以及子层 /usr 和 share 要存放的数据。

7、linux 根目录下

FHS 对 linux 根文件系统的基本目录都做了一些比较详细的规定,比如说哪些文件夹要放置哪些文件。

bin: 系统启动时需要的可执行命令,大部分普通用户只有可执行权限没有读写权限,只有 root 用户

有读写权限,

boot: 用来存放 BootLoader 相关文件,千万不要乱动,否则无法进入系统。

cdrom: 光盘目录

dev : 设备驱动文件夹

etc : 系统配置文件夹,这个文件夹的权限很高,只有 root 用户才可以修改这个文件夹

home: 家目录,普通用户都有一个以自己名字命名的文件夹存放在这个目录里面,

lib: 各种程序所需要的库文件和系统可以正常运行的支持文件都存放在这个文件夹里面

lib64: 64 位支持库

media: 用来存放媒体信息的文件

mnt: 可以把设备挂载在这个文件夹下,比如 U 盘,

opt: 可以用来存放第三方文件

proc: 用来存放系统信息和进程信息

root: root 用户的家目录

run: 保存了系统从最开始到现在的系统信息

sbin: 存放系统管理员的可执行命令,里面也是二进制文件

snap: snap 应用程序框架的程序文件

srv: 用来存放系统存储服务相关数据

sys: 系统的设备和文件层次信息

temp: 存放临时文件

usr: 存放和用户有关的文件

var: 存放一直在变化的文件

这个就是在 FHS 规范的建议下, linux 根目录下各个文件的规定。尽管 FHS 这个不是强制的标准,作为一个开发人员,要遵守这个标准的,比如说后面定义了一个命令,就要把这个命令放到 bin 文件下,不然别人接手项目就容易出现混乱。

8、什么是文件系统?

操作系统中负责管理和存储文件系统的软件称为文件系统。

9、linux 为什么需要文件系统?

Linux 系统必须要挂载一个文件系统,如果系统不能从指定的设备挂载,系统就会出错。

10、linux 常见文件系统的类型都有哪些?

ext3 , ext4 , proc 文件系统 , sysfs 文件系统

ext3 文件系统是从 ext2 发展过来的,而且完全兼容 ext2 文件系统,并且比 ext2 要小,要可靠。

ext4 文件系统是在 ext3 的基础上改进的,并且 ext4 文件系统在性能和可靠性上都要比 ext3 的表现更好,而且功能也非常的丰富,并且 ext4 完全兼容 ext3 ,ext3 只支持 32000 个子目录,但是 ext4 支持无限数量的子目录,所以比 ext3 更优秀。

Proc 文件系统,这个文件系统是 linux 系统中特殊的文件系统,实际上它是只存在内存中的,它是一

个伪文件系统。这个文件系统是内核和内核模块用来向进程发送消息的机制。

11、ubuntu 的文件系统类型是什么呢?

可以用 df 命令来查看

功能:df 命令可以显示磁盘分区上的可以使用的磁盘空间

使用 df -T 可以显示文件系统的类型,用 man 手册来查看下,

Filesystem 显示该文件系统是在哪个分区,它这里把所有的设备名称都列出来了,如图所示,

/dev/sda1 是 ubuntu 的主分区,Type 是文件系统的类型。所以我们 ubuntu 的主分区的文件类型就是 ext4。ext4 上边的 tmpfs 是虚拟内存文件系统。308519744 这串数字代表的是我们内存的总和,1k 代表单位。ext4 和 ext3 它是日志型的文件系统,要比传统型的文件系统安全,因为它可以用独立内容的日志来跟踪磁盘内容的变化,Used 是已经使用的空间大小,Available 这一列是剩余空间大小,Use% 是磁盘使用率,这里要注意下,如果 /dev/sda1 使用率在 90%以上都要用满了,就要注意了,可能会造成系统出问题。

最后一个 Mounted on 是磁盘挂载的目录,就是说磁盘挂载到哪个目录下,这里/dev/sda1 就挂载到了 / 目录上面。df -Th ,以人们更容易读的方式显示。

第三列就变成了 Size ,把 kb 单位帮助我们换成了 1.9G , 393M ,这样看起来就更加容易了,

如果不想看文件系统的内容,就可以不加 T 参数,直接输入 df -h 参数,这样就能看到一个磁盘的使用

状况

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值