Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容。

Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序看到的文件、目录、软链接及文件保护信息等都存储在其中。

Linux最早的文件系统是Minux,但是专门为Linux设计的文件系统---扩展文件系统第二版(EXT2)被设计 出来并添加到Linux中,这对Linux产生了重大影响。

Linux常用的文件系统

  • ext2:ext2的升级版本ext3是Linux默认的文件系统

  • swap:作为交换分区来使用,在安装Linux系统时必须要建立

  • vfat:兼容Windows操作系统,主要是FAT16、FAT32

  • NFS:网络文件系统,是Linux的独到之处,方便在局域网中实现文件的共享,可以实现多台主机共享一台主机的文件系统

硬链接和软链接

命令格式:

$ ln P1 P2

用来创建一个新的硬链接,即为由路径P1标识的文件创建一个路径名为P2的硬链接。

硬链接有两方面的限制

  • 不允许用户给目录创建硬链接。因为这可能把目录树变成环形树,从而就不可能通过名字定位一个文件。

  • 只有在同一文件系统中的文件之间才能创建链接。这带来比较大的限制,因为现代Unix系统中可能包含多种文件系统,这些文件系统位于不同的磁盘和/或分区,用户也无法知道它们之间的物理划分。

软链接(soft link)[也称符号链接(symbolic link)]

符号链接是短文件,这些文件包含有另一个文件的任意一个路径名。路径名可以指向位于任意一个文件系统的任意文件或目录,甚至可以指向一个不存在的文件。

命令格式:

$ ln -s P1 P2

创建一个路径名为P2的新软链接,P2指向路径名P1。

Linux目录结构

Linux的文件系统采用阶层式的树状目录结构,在该结构中的最上层是根目录“/”,然后再根目录下再建立其它的目录。

文件或目录名由除“/”和空字符“\0”之外的任意ASCII字符序列组成(一些操作系统允许以多种自负表示文件名,例如:Unicode)。大多数文件系统对文件名的长度都有限制,通常不能超过255个字符。

Linux中无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上讲,个磁盘分区上的树型目录不一定是并列的。

常用目录的作用

  • / 根目录

  • /bin 命令保存目录(普通用户就可以读取的命令)

  • /boot 启动目录,启动相关文件

  • /dev 设备文件保存目录

  • /etc 配置文件保存目录

  • /home 普通用户的家目录

  • /lib 系统库保存目录

  • /mnt 系统挂载目录

  • /media 挂载目录

  • /root 超级用户的家目录

  • /tmp 临时目录

  • /sbin 命令保存目录(超级用户才能使用的目录)

  • /proc 直接写入内存的

  • /sys

  • /usr 系统软件资源目录

    /usr/bin 系统命令(普通用户)
    /usr/sbin 系统命令(超级用户)
    /usr/include:标准头文件
    /usr/src:内核源代码

  • /var 系统相关文档内容

根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。

proc和sys目录不能直接操作,这两个目录保存的是内存的过载点。

Linux文件类型

  • 普通文件:通常是流式文件。

    [root@AmorLei tmp]# ls -lh yan.test
    -rw-r--r-- root root Sep : yan.test
  • 目录文件:用于表示和管理系统中的全部文件

    [root@AmorLei tmp]# ls -lh
    drwxr-xr-x root root .0K Sep : yanlei
  • 链接文件:用于不同目录下的文件的共享

    [root@AmorLei tmp]# ls -lh yan.softlink
    lrwxrwxrwx root root Sep : yan.softlink -> yan.test
  • 设备文件:包括块设备文件和字符设备文件

    b代表区块(block)设备,c代表字符(character)设备

    [root@AmorLei /]# ls -la /dev/tty
    crw-rw-rw- root tty , Sep : /dev/tty
  • 管道(pipe,FIFO)文件:提供进程间通信的一种方式

  • 套接字(socket)文件:该文件类型与网络通信有关

    [root@AmorLei /]# ls -lh /var/lib/mysql/mysql.sock
    srwxrwxrwx mysql mysql Sep : /var/lib/mysql/mysql.sock

文件描述符与索引节点

Unix对文件的内容和描述文件的信息给出了清楚的区分。除了设备文件和特殊文件系统文件外,每个文件都由字符序列组成。

文件系统处理文件需要的所有信息包含在一个名为索引节点(inode)的数据结构中。每个文件都有自己的索引节点,文件系统用索引节点来标识文件。

文件系统至少提供POSIX标准中指定的如下属性:

  • 文件类型

  • 与文件相关的硬链接个数

  • 以字节为单位的文件长度

  • 设备标识符

  • 在文件系统中表示文件的索引节点号

  • 文件拥有者的UID

  • 文件的用户组ID

  • 几个时间戳,表示索引节点状态的改变的时间、最后访问时间即最后修改时间

  • 访问权限和文件模式

访问权限和文件模式

文件的潜在用户分为三种类型

  • 作为文件所有者的用户

  • 同组用户,不包括所有者

  • 所有剩下的用户(其他)

有三种类型的访问权限---读、写、执行,每组用户都有这三种权限。

分区

在Windows操作系统中,是先将物理地址分开,再在分区上建立目录。在Windows操作系统中,所有路径都是从盘符开始,如C:\Program file。

Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认分为3个分区,分别是boot分区、swap分区和根分区。

挂载

Linux下的分区需要挂载到目录后才能使用,挂载的意义就是把磁盘分区的内容放在某个目录下。这个把目录和分区对应的过程叫做挂载(Mount)而这个挂载在文件树中的位置就是挂载点。

当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,将物理分区细节屏蔽掉,用户只有统一的逻辑概念,所有的东西都是文件。

参考资料:

深入理解Linux内核                Daniel P.Bovet & Marco Cesati

Linux文件系统概述的更多相关文章

  1. Linux文件系统概述二

    VFS-目录项对象(dentry) 每个文件除了有一个索引节点 inode 数据结构外,还有一个目录项 dentry 数据结构 dentry 结构代表的是逻辑意义上的文件,描述的是文件逻辑上的属性,目 ...

  2. 自学Linux Shell8.1-linux文件系统概述及操作

    点击返回 自学Linux命令行与Shell脚本之路 8.1-linux文件系统概述及操作 1. linux支持的文件系统 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 ...

  3. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  4. Linux文件查找.md

    Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 w ...

  5. Linux 文件压缩与归档

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  6. Linux文件类型

    1.windows系统和Linux系统的区别 windows通过问价扩展名来区分文件类型,例如*.txt是一个文本文件, linux系统文件的扩展名和文件类型没有关系 为了容易区分文件类型,linux ...

  7. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  8. Linux文件和目录权限详细讲解

    转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...

  9. linux 文件系统结构及命令

    1.linux 文件系统结构 / 根目录 root |--mnt/ | |--sdcard/  挂载点 | |--usb0 | |--cdrom |--home | |--soft01 <- 用 ...

随机推荐

  1. python 按每行读取文件怎么去掉换行符

    python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...

  2. python win32 简单操作

    源由 刚开始是帮朋友做一个按键精灵操作旺信的脚本,写完后各种不稳定:后来看到python可以操作win32相关的api,恰好这一段时间正在学习python,感觉练手的时候到了~~~ 下载 要注意Pyt ...

  3. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  4. P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 约翰家有N头奶牛,第i头奶牛的编号是Si,每头奶牛的编号都是唯一的.这些奶牛最近 在闹脾气,为表达不满的情绪,她们在挤奶的时候一定要排成混乱的队伍.在一只混乱的队 伍中,相邻奶牛的编号之差均 ...

  5. linux如何在日志中查找关键字、前几行、结尾几行

    如何使用命令行快速查看项目日志是每个开发人员必备技能,尤其在没有专门日志搜集系统的情况下,想要知道目前项目运行状态最好的办法就是打开log日志一瞅即明白. 复杂的到用时再查不晚,但是简单的还是有必要掌 ...

  6. npm模块管理器入门

    什么是 NPM npm 是 Node 官方提供的包管理工具,他已经成了 Node 包的标准发布平台,用于 Node 包的发布.传播.依赖控制.npm 提供了命令行工具,使你可以方便地下载.安装.升级. ...

  7. 02-线性结构4 Pop Sequence

    题目 Sample Input: 5 7 5 1 2 3 4 5 6 7 3 2 1 7 5 6 4 7 6 5 4 3 2 1 5 6 4 3 7 2 1 1 7 6 5 4 3 2 Sample ...

  8. RabbitMQ Cluster群集安装配置

    #RabbitMQ Cluster群集安装配置 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ########## ...

  9. linux 常用命令详解

    常见Linux目录名称:/ 虚拟目录的根目录.通常不会在这里存储文件/bin 二进制目录,存放许多用户级的GNU工具/boot 启动目录,存放启动文件/dev 设备目录,Linux在这里创建设备节点/ ...

  10. thinkphp中各字母代表的发放和具体实例

    hinkphp单字母函数使用指南A方法 A方法用于在内部实例化控制器,调用格式:A('[项目://][分组/]模块','控制器层名称') 最简单的用法: $User = A('User'); 复制代码 ...