Linux 目录结构

文件系统

在介绍Linux目录前,我们需要知道什么是文件系统,什么是目录。为了更好的理解Linux目录结构,我们先要了解Linux在文件系统上和我们常用的Windows相比有什么差异。

什么是文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

什么是文件目录

一个计算机系统中有成千上万个文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。在我们一般的计算机操作时候,Windows上我们看到的文件夹就是文件目录。

Windows和Linux文件系统的差异

访问路径的差异

在Windows系统中, 一切东西都是存放在硬盘上的。启动系统后,先确定硬盘,再确定硬盘上的分区以及每个分区所对应文件系统,最后是存放在某个分区特定的文件系统中的文件。 也就是说,Windows是通过 “硬盘上的某个分区-分区上的目录-特定文件” 这样的顺序来访问到一个文件的。

在Linux系统中的一切都是存放在唯一的虚拟文件系统中,这个虚拟文件系统是树状的结构以一个根目录开始。启动系统后,先有这个虚拟文件系统,再识别出各个硬盘, 再把某个硬盘的某个分区挂载到这个虚拟文件系统的某个子树上,再确定分区对应的子目录文件系统,最后的文件就存放在这个特定的文件系统中。 也就是说, Linux 系统是通过 “虚拟文件系统-虚拟文件系统的目录-特定文件” 这样的顺序来访问一个文件的。

从这里面我们可以明确的看出,Windows是直接映射物理设备如实的映射到系统中,而Linux是将物理设备映射到一个已经建立好的结构上。

设计理念的不同

在Windows系统中,可以把文件大体分为两种: 系统文件和用户文件 。一般来说系统文件(例如Windows操作系统本身,一些系统程序,程序运行所需的库文件,以及一些系统配置文件等)存放的默认位置在C盘,其它用户文件,包含用户后来安装的程序以及一些数据文件等,用户可以把它们随意存放在任意的分区。

在Linux 系统中,Linux将除了内核之外的东西,无论是键盘,鼠标,数据,程序,CPU,内存,网卡等硬件、软件和数据,还是内存中的东西,我们都可以在虚拟文件系统中的相应子目录对他们进行访问和操作。

Linux的目录结构

因为Linux是一个开源可定制的操作系统,Linux的开发者们可以随便重新定义这些目录结构。为了防止发生这种情况,Linux开发者和爱好者们组建了FHS(Filesystem Hierarchy Standard)用来规范化Linux的虚拟目录结构。

简单的可以说,Linux目录结构中,大致可以用,是否可变和是否可以被别的主机共享来概括

| |可共享的|不可共享的| | ——– | ——– |——–| ——-| |不可变的|/usr(一般软件)、/opt(第三方可选文件)等 | /etc(全局配置文件)、/boot(启动文件)等| |可变的|/var/db(数据库文件)等|/var/run(进程PID)等|

Linux的目录起点-根目录(/)

根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文件、开机所需程序、 静态或动态库等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。

Linux下比较重要的目录

/boot目录

主要放置开机会使用到的文件,包括Linux核心档案以及开机选单与开机所需配置文件等等。Linux kernel常用的档名为:vmlinuz,如果使用的是GRUB做引导程序,则还会存在/boot/grub/这个目录。

/bin目录

/bin是根目录下比较特殊的一个目录。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限),chown,date, mv,mkdir,cp,bash等等常用的指令。所以并不推荐挂载在和/boot目录上不同的硬盘上。

/sbin目录

和/bin目录类似,但是更加重要,里面的命令功能也更加强大一些。

/lib目录

/lib放置系统开机时可能用到的动态库或者静态库,,以及在/bin下的指令使用到的动态库或者静态库。

/etc目录

系统主要的配置几乎都放置在这个目录内,例如人员的帐号密码文件、各种服务的配置文件等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。

/root目录

系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。

/home目录

这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会放到这里来。这里一般都是存放用户的个人文件,root可以读取和写入,非家目录的所有者是根据家目录所有者设置的权限来决定是否能看到里面的内容。一般在Linux交互终端的shell中 “~”代表当前使用者的家目录。

Linux目录结构为什么是这样的

Linux目录结构是由Unix目录结构演变而来的。因为Unix的设计者们为了简化设计和提高可操作性提出了一切皆文件的理念,从而有了虚拟文件系统和这个看起来很复杂的目录结构。但是实际上是因为一些历史原因(我会告诉你是磁盘满了吗?)造成的。

请参考阮一峰大神博客Unix目录结构的来历。

总结

对于Linux新人来说,Linux的目录结构确实让人混乱,但是它是有规律可寻找的,只要经常使用Linux就会发现里面有很多规律可循。因此我们不要看到Linux中复杂的文件目录结构就被吓到了,从而敬而远之。

Power by Vultr and AiWiki
Copyright © 2019 David Fox All Rights Reserved.