3.1-Linux文件系统结构
混一天和努力一天,一天看不出任何差别,三天看不到任何变化,七天也看不到任何距离……但是一个月后会看到话题不同,三个月后会看到气场不同,比你努力的人还在更努力
1. Linux系统文件
Linux的文件是什么?
对于UNIX系统来说(同样适用于Linux),以下便是对文件简单的描述:
在UNIX系统中,一切皆为文件;若非文件,则为进程
1.1 Linux的文件类型
大多数文件仅仅是普通文件,他们被称为regular文件;他们包含普通数据,比如,文本、可执行文件、或者程序、程序的输入或输出等等
虽然你可以认为“在Linux中,一切你看到的皆为文件”这个观点相当保险,但这里仍有着一些例外。
目录:由其他文件组成的文件
特殊文件:用于输入和输出的途径。大多数特殊文件都储存在/dev中,我们将会在后面讨论这个问题。
链接文件:让文件或者目录出现在系统文件树结构上多个地方的机制。我们将详细地讨论这个链接文件。
(域)套接字:特殊的文件类型,和TCP/IP协议中的套接字有点像,提供进程间网络通讯,并受文件系统的访问控制机制保护。
命名管道 : 或多或少有点像sockets(套接字),提供一个进程间的通信机制,而不用网络套接字协议。
1.2 Linux软件实现
Linux系统软件实现Linux 使用两层软件实现的方式来提高系统和程序员的效率;
第一层是 Linux 虚拟文件系统。虚拟文件系统提供了内核和开发者访问所有类型文件系统的的单一命令集。虚拟文件系统软件通过调用特殊设备驱动来和不同类型的文件系统进行交互。
特定文件系统的设备驱动是第二层实现。设备驱动程序将文件系统命令的标准集解释为在分区或逻辑卷上的特定类型文件系统命令。
2. Linux文件结构
目录 | 描述 |
---|---|
/ |
主层次 的根,也是整个文件系统层次结构的根目录 |
/bin |
存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat、ls、cp等等 |
/boot |
存放引导加载程序文件,例如kernels、initrd等 |
/dev |
存储特殊文件(tty虚拟终端之类)和设备文件(字符设备(键盘、显示器)、块设备(硬盘、光盘)),例如/dev/null
|
/etc |
存放主机特定的系统级配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的UNIX实施文档的早期版本中,/etc表示是“其他(etcetera)目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,文件系统目录标准 FSH 限定 /etc 用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义 |
/etc/opt |
存储着新增包的配置文件 /opt/ . |
/etc/sgml |
存放配置文件,比如 catalogs,用于那些处理SGML(译者注:标准通用标记语言)的软件的配置文件 |
/etc/X11 |
X Window 系统11版本的的配置文件 |
/etc/xml |
配置文件,比如catalogs,用于那些处理XML(译者注:可扩展标记语言)的软件的配置文件 |
/home |
用户的主目录,包括保存的文件,个人配置,等等 |
/lib |
/bin/ 和 /sbin/ 中的二进制文件的必需的库文件 |
/lib<架构位数> |
备用格式的必要的库文件。 这样的目录是可选的,但如果他们存在的话肯定是有需要用到它们的程序 |
/media |
可移动的多媒体(如CD-ROMs)的挂载点。(出现于 FHS-2.3) |
/mnt |
临时挂载的文件系统 |
/opt |
可选的应用程序软件包 |
/proc |
以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统(procfs )的挂载点 |
/root |
根用户的主目录 |
/sbin |
必要的系统级二进制文件,比如, init, ip, mount |
/srv |
系统提供的站点特定数据 |
/tmp |
临时文件 (另见 /var/tmp ). 通常在系统重启后删除 |
/usr |
二级层级存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序 |
/usr/bin |
非必要的命令二进制文件 (在单用户模式中不需要用到的);用于所有用户 |
/usr/include |
标准的包含文件 |
/usr/lib |
库文件,用于/usr/bin/ 和 /usr/sbin/ 中的二进制文件 |
/usr/lib 架构位数 |
备用格式库(可选的) |
/usr/local |
三级层次 用于本地数据,具体到该主机上的。通常会有下一个子目录, 比如, bin/ ,lib/ , share/ . |
/usr/local/sbin |
非必要系统的二进制文件,比如用于不同网络服务的守护进程 |
/usr/share |
架构无关的 (共享) 数据. |
/usr/src |
源代码,比如内核源文件以及与它相关的头文件 |
/usr/X11R6 |
X Window系统,版本号:11,发行版本:6 |
/var |
各式各样的(Variable)文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件 |
/var/cache |
应用程序缓存数据. 这些数据是由耗时的I/O(输入/输出)的或者是运算本地生成的结果。这些应用程序是可以重新生成或者恢复数据的。当没有数据丢失的时候,可以删除缓存文件 |
/var/lib |
状态信息。这些信息随着程序的运行而不停地改变,比如,数据库,软件包系统的元数据等等 |
/var/lock |
锁文件。这些文件用于跟踪正在使用的资源 |
/var/log |
日志文件。包含各种日志。 |
/var/mail |
内含用户邮箱的相关文件 |
/var/opt |
来自附加包的各种数据都会存储在 /var/opt/ . |
/var/run |
存放当前系统上次启动以来的相关信息,例如当前登入的用户以及当前运行的daemons(守护进程). |
/var/spool |
该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列 |
/var/mail |
过时的位置,用于放置用户邮箱文件 |
/var/tmp |
存放重启后保留的临时文件 |
2.1 实例展示:
tips:主设备名,次设备名如/dev/null就是1,3,/dev/zero就是1,5
image
- tips :CentOS 7 都是把根目录的一些目录软连接到/usr下的目录
3.软连接、硬链接
软链接和硬链接是我们常见的两种概念:
硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red]任意一个[/color]其余的文件将不受影响。
软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。