linux文件

linux的哲学:在linux中一切皆是文件

而虚拟文件系统正是实现上述两点 Linux 特性的关键所在。虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个 抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。

为了能够支持各种实际文件系统,VFS 定义了所有文件系统都支持的基本的、概念上的接口和数据 结构;同时实际文件系统也提供 VFS 所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式 上与VFS的定义保持一致。换句话说,一个实际的文件系统想要被 Linux 支持,就必须提供一个符合VFS标准 的接口,才能与 VFS 协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS 层和内核的其他部分看来,所有文件系统都是相同的。图显示了VFS在内核中与实际的文件系统的协同关系。

VFS在内核中与其他的内核模块的协同关系

我们已经知道,正是由于在内核中引入了VFS,跨文件系统的文件操作才能实现,“一切皆是文件” 的口号才能承诺。而为什么引入了VFS,就能实现这两个特性呢?在接下来,我们将以这样的一个思路来切入 文章的正题:我们将先简要介绍下用以描述VFS模型的一些数据结构,总结出这些数据结构相互间的关系;然后 选择两个具有代表性的文件I/O操作sys_open()和sys_read()来详细说明内核是如何借助VFS和具体的文件系统打 交道以实现跨文件系统的文件操作和承诺“一切皆是文件”的口号。

1、根目录

根目录是一个非常重要的目录,
而且所有的目录都是由根目录衍生出来的,还与很多过程有关,例如开机启动,重要文件等都相关。

/就代表根目录,这就是他的符号

下面再说说根目录下边的其他重要文件

2、文件夹

(1)/bin

主要是被root用户使用,下边存放着root用户使用的命令的程序包,

如里边放着cat  chmod  chown等命令。  

(2)/boot

存放着开机所用到的各种文件,包括linux核心文件。linux kernel常用的存档名是vmlinuxz.

如果是用grub2管理开机项,则应该还有一个/boot/grub2这个目录  

(3)/dev

这个文件夹下面放着各种接口设备和装置,因为在linux下一切皆是文件,

所以我们的键盘鼠标u盘磁盘等设备都会以文件的形式存放在这个目录下。 

(4)/etc

系统的主要配置文件,几乎都放在这个目录下,比如账号的密码等文件,

就在/etc/passwd这个目录下。这个文件夹可以被使用者访问查阅,但是只有root用户可以更改。  

(5)/lib

这个文件夹一看就是放函数库的,

只不过这里放的是开机时会用到的函数库。  

(6)/media

放置挂载项,这个单词的意思大概就是媒体的意思,

所以DVD CD等光盘一般都挂载在这里  

(7)/mnt

这个目录也是用来放临时挂载用的目录,

比如我们在虚拟机中的共享文件夹就挂载在这个目录下边,/mnt/hgfs  

(8)/opt

这个目录一般放第三方下载软件用的目录
比如虚拟机中的KDE集成桌面就放在这个目录下。

我们也可以把自己安装的软件放在这个目录下,

但是按照以前的习惯,我们都是放在/usr/local目录下。  

(9)/sbin目录

root用户才可以使用的一些命令,其他用户只能查询,

放置了与开机还原等相关的东西。    

(10)/usr

这个usr是Unix Software Resource的缩写,这个目录下边还有许多目录。

/usr/local目录,就是用来放置自己安装的软件的。

/usr/bin一般用户可以用的命令,就在这里

/usr/lib库函数,刚才的/lib应该就是链接这里的。   

(11)/tmp

用来存放一些临时文件,可能会定期清理,

所以重要文件可不敢放在这里。所有用户均可以访问。  

(12)/var

用来存放软件运作产生的文件,以及程序文件等。会慢慢的占用磁盘空间。

比如

/var/bin程序运行语言的库文件。

/var/log用户登录信息等文件。

版权属于:孟超 本文链接:https://mengchao.xyz/index.php/archives/135/ 转载时须注明出处及本声明

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从刷机开始学ARM

    ①ARM是一家公司:ARM前身为艾康电脑,于1978年在英国剑桥成立。1980年苹果与艾康合作,研究ARM。 1985年研究出ARM1(全球第一款商用RISC架...

    用户5426759
  • Linux内核配置编译及启动过程分析

    Linux内核并不能被用户直接使用,发行版才可以。Linux主要的工作是内存管理,进程调度等等,发行版加上了桌面和各种可用的工具,才能被用户使用。

    用户5426759
  • uboot看这一篇应该就够了!

    U-Boot,全称 Universal Boot Loader,是遵循GPL条款是一个开源项目,用于启动操作系统内核,操作系统并不是一开机就会自动启动,是要有引...

    用户5426759
  • mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法

    查看win10系统升级日志,果然找到了原因,是因为CVE-2018-0886 的 CredSSP 2018 年 5 月 8 日更新默认设置从“易受攻击”更改为“...

    依乐祝
  • 贝佐斯旗下媒体爆料:亚马逊因言废人,不管啥岗位,抗议就走人

    这些base在不同地方的员工,均对亚马逊仓库的防疫条件提出了抗议,认为这非常不安全。

    量子位
  • 2018-11-01 最近想看的关于数据流式处理的书

    《流式系统》by Tyler Akidau, Slava Chernyak, Reuven Lax

    SeanCheney
  • Python list初始化

    4、Python的四种数据类型字典、集合、列表、元组,分别用花括号、中括号、小括号表示。如:

    py3study
  • GitHub 发布即登顶的优秀渗透教程

    近日的 GitHub 趋势榜榜首,发布仅2-3天天,便斩获超 1000 star,就是来自中国老司机的“渗透攻击”经验整理---Micro8。这位大牛研究渗透攻...

    墙角睡大觉
  • C#3.0新增功能09 LINQ 标准查询运算符 03 按执行方式的分类

    标准查询运算符方法的 LINQ to Objects 实现主要通过两种方法之一执行:立即执行和延迟执行。使用延迟执行的查询运算符可以进一步分为两种类别:流式处理...

    张传宁老师
  • Java类加载原理机制

    1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: ? 1...

    汤高

扫码关注云+社区

领取腾讯云代金券