Loading... <p><span style="font-size: 18px"><strong><span style="font-family: 宋体">前言</span></strong></span></p> <p> <span style="font-family:宋体">当今计算机操作系统来说常见功能主要有:进程调度、内存管理、文件系统管理、网络协议栈支持、驱动程序管理、安全功能等。所有对于我们来讲学习</span>Linux<span style="font-family:宋体">文件系统也是一个十分重要的知识,也是学习</span>Linux<span style="font-family:宋体">的必备基础知识,学习好</span>Linux<span style="font-family:宋体">的文件系统知识也是为接下来学习</span>Linux<span style="font-family:宋体">的其他知识奠定良好的基础</span></p> <p><strong style="font-size: 18px"><span style="font-family: 宋体">关键词</span></strong></p> <p> Linux的哲学思想、Linux的文件和目录、根文件系统、目录树、FHS、绝对路径与相对路径、工作目录、家目录</p> <p><span style="font-size: 18px"><strong>Linux<span style="font-family: 宋体">的哲学思想</span></strong></span></p> <p> 1.<span style="font-family:宋体">一切皆文件(硬件设备亦表现为文件)</span></p> <p> 2.<span style="font-family:宋体">由众多目的单一的小程序组成;一个程序只做一件事,并且要做好</span></p> <p> 3.<span style="font-family:宋体">组合小程序完成复杂任务</span></p> <p> 4.<span style="font-family:宋体">尽可能避免跟用户交互,方便了脚本编程实现自动化运维</span></p> <p> 5.<span style="font-family:宋体">使用文本文件保存程序的配置信息,好处是使用一个文本编辑器即可完成系统及服务配置工作</span></p> <p><strong style="font-size: 18px"><span style="font-family: 宋体">根文件系统</span></strong></p> <p> <span style="font-family: 宋体">文件系统是对一个存储设备上的数据和元数据进行组织的进制。根文件系统首先也是一种文件系统,相较于普通的文件系统而言它的特殊之处在于,它是内核启动时所挂载的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本和服务加载到内存中去运行。根目录是整个文件系统最重要的一个目录,所有的目录都是由根目录衍生出来的,同时根目录也与开机</span>/<span style="font-family: 宋体">还原</span>/<span style="font-family: 宋体">系统修复等动作有关。借鉴了</span>Unix<span style="font-family: 宋体">的思想理念,</span>Linux<span style="font-family: 宋体">文件系统管理也是采用根文件系统。</span></p> <p><span style="font-size: 18px"><strong>Linux<span style="font-family: 宋体">的文件系统结构和目录</span></strong></span></p> <p><strong> 1.Linux<span style="font-family: 宋体">文件系统</span></strong></p> <p> Linux<span style="font-family:宋体">由于采用了根文件系统,所以所有其他的目录和文件都是在根之下,根是处于最顶级的位置,由根衍生出文件系统的各种目录和文件。这就好像一棵倒置的树,由树的根开始开出各种分叉,分叉下又有子分叉,到最后是树的叶子;树的分叉就是根下的目录或子目录,而叶子则就是具体的文件了,也叫叶子结点</span></p> <p> <strong>2.Linux<span style="font-family: 宋体">的目录树</span></strong></p> <p> <span style="font-family:宋体">在</span>Linux<span style="font-family:宋体">底下,所有的文件与目录都是由根目录开始的,它是所有目录与文件的源头,然后再一个一个的分支下来,跟树的树状类似,因此也称这种目录配置方式为目录树</span></p> <p> <span style="font-family:宋体">一个目录对于上层的父目录来说它也是父目录下的一个文件,同时该目录下可以有子目录或文件,所以也可以这样说:<strong><span style="color:red">一个目录就是一个名称空间</span></strong></span></p> <p> <span style="font-family:宋体">在同一个名称空间内不能有两个相同名称的文件,在不同名称空间内则可以存在两个名称相同的文件。</span></p> <p><strong><span style="font-family:宋体">3.绝对路径与相对路径</span></strong></p> <p> <span style="font-family: 宋体">由于所有的目录和文件都是由根开始的,当我们要表示一个文件时,由某一个点开始到指定文件位置的经过就叫路径。</span>Linux<span style="font-family: 宋体">中的路径表示法有绝对路径和相对路径。</span></p> <p> <span style="font-family:宋体">绝对路径:由根目录(</span>/<span style="font-family:宋体">)这个顶级名称空间起始到目标位置的文件名或目录名称的路径,例如</span> /home/magedu/.bashc;</p> <p> <span style="font-family:宋体">相对路径:从非顶级空间,由相对于当前位置起始到目标位置的路径,例如</span> ./home/magedu <span style="font-family:宋体">或者</span> ../.. ../home <span style="font-family:宋体">等等,可以这么说路径开头不是(</span>/<span style="font-family:宋体">)的就是相对路径的写法。</span></p> <p> <span style="font-family: 宋体">特殊目录表示方法</span></p> <p> <strong><span style="color:red">.</span></strong> : <span style="font-family:宋体">代表当前目录</span></p> <p> <strong><span style="color:red">..</span></strong> : <span style="font-family:宋体">代表当前目录的上一层目录</span>(<span style="font-family:宋体">父目录</span>) <span style="font-family:宋体">,例如:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163706-38.png" title="1429025264512484.png" alt="blob.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703163706-3.png" title="1429025284849844.png" alt="blob.png" /></p> <p><strong><span style="font-size: 18px">Linux<span style="font-family: 宋体">目录配置的依据</span>FHS<span style="font-family: 宋体">:文件系统层级结构标准</span></span></strong></p> <p> <span style="font-family: 宋体">由于</span>Linux<span style="font-family: 宋体">开源软件的特点,利用</span>Linux<span style="font-family: 宋体">来开发产品或发布</span>distributions<span style="font-family: 宋体">的发行商公司或社群、个人有很多,如果每个人都用自己的想法来组织</span>Linux<span style="font-family: 宋体">文件系统结构,则</span>Linux<span style="font-family: 宋体">的学习和实际生产环境使用管理可能会造成很多管理上的困扰,所以就有了</span>FHS<span style="font-family: 宋体">标准的出炉了</span></p> <p> FHS<span style="font-family:宋体">依据文件系统使用的频繁与否与是否允许使用者随意更改,而将目录定义成为四种交互作用的形态,如下图所示</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163706-39.png" title="1429025329114744.png" alt="blob.png" /></p> <p> <span style="font-family:宋体">可分享就是能够分享给网络上的其他主机挂载使用的目录;不可分享如主机上的配置文件,由于仅与本机自身有关不适合分享给其他主机;不变的如函数库、说明文件、系统管理员所管理的主机服务配置文件等;可变动的就是经常改变的数据,如登录文件等</span></p> <p><strong>Linux<span style="font-family:宋体">文件结构标准</span></strong></p> <p><span style="font-family:宋体">一般来说由根开始默认</span>Linux<span style="font-family:宋体">有以下几个目录,如下图:</span></p> <p><span style="font-family:宋体"><img src="//cto.wang/usr/uploads/2016/07/20160703163706-23.png" title="1429025357732708.png" alt="blob.png" /></span></p> <p><strong><span style="font-family:宋体">目录的详细介绍:</span></strong></p> <p> 1. /bin <span style="font-family:宋体">系统放置执行文件的目录,在</span>/bin<span style="font-family:宋体">底下的命令可以被</span>root<span style="font-family:宋体">与普通管理员等所有用户使用</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163706-45.png" title="1429025404775101.png" alt="blob.png" /></p> <p> 2. /sbin <span style="font-family:宋体">只有管理员才可以使用的管理命令的存放路径,</span>Linux<span style="font-family:宋体">有非常多的命令是用来设定系统环境的,这些命令只有</span>root<span style="font-family:宋体">才能够使用,其他用户最多只能查询</span></p> <p> /bin<span style="font-family:宋体">和</span>/sbin<span style="font-family:宋体">包含了系统自身启动和运行时可能会用到的核心二进制命令。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163706-54.png" title="1429025435372930.png" alt="blob.png" /></p> <p> 3. /lib <span style="font-family:宋体">共享库文件和内核模块的存放目录,放置的是在开机时会用到的函数库和内核核心相关的模块(如驱动程序)等</span></p> <p> 4. /lib64 <span style="font-family:宋体">只在</span>64<span style="font-family:宋体">位系统上有,类似于</span>/lib</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-58.png" title="1429025451110860.png" alt="blob.png" /></p> <p> 5. /etc <span style="font-family: 宋体">存放的是系统和程序的配置文件,系统主要的配置文件几乎都放置在这个目录内,一般来说,这个目录下的各文件的属性是可以让一般使用者查询的,但是只有</span>root<span style="font-family:宋体">有权限修改</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-33.png" title="1429025463180638.png" alt="blob.png" /></p> <p> 6. /usr :<span style="font-family:宋体">(</span>Unix Software Resources unix<span style="font-family:宋体">操作系统软件资源的缩写),所有系统默认的软件(发行商提供的软件)都会放置在该目录下,这个目录有点类似于</span>windows<span style="font-family:宋体">系统的“</span>C:\Windows<span style="font-family:宋体">”和“</span>C:\Program Files<span style="font-family:宋体">”这两个目录的综合体,系统刚安装完毕时这个目录会占用最多的硬盘容量;里面的文件不和特定的用户相关,也不会在正常使用中修改,可以通过网络共享这个目录,这样当管理员在这个目录下安装了新的软件后,所有共享这个目录的计算机均可以使用该新软件</span></p> <p> /usr/bin <span style="font-family:宋体">绝大部分用户可使用的命令都放在这里,它与</span>/bin<span style="font-family:宋体">的不同之处在于是否与开机过程有关</span></p> <p> /usr/sbin <span style="font-family:宋体">放置非系统正常动作所需要的核心系统命令</span></p> <p> /usr/lib<span style="font-family:宋体">,</span>/usr/lib64 <span style="font-family:宋体">用户使用的和非核心系统命令所依赖的库文件存放路径</span></p> <p> /usr/share <span style="font-family:宋体">放置共享文件的地方,该目录下的数据不分硬件架构均可读取的数据,常见的有</span>/usr/share/man<span style="font-family:宋体">,</span>/usr/share/doc <span style="font-family:宋体">程序的帮助文件目录</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-19.png" title="1429025476139909.png" alt="blob.png" /></p> <p> 7. /dev device<span style="font-family:宋体">的简写,在</span>Linux<span style="font-family:宋体">系统上任何装置与接口设备都是以文件的形态存在于这个目录中的,设备文件通常也称为特殊文件,仅有元数据而没有数据的,仅仅做为某个设备的访问入口用于标识一个设备使用的</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-2.png" title="1429025494534869.png" alt="blob.png" /></p> <p> 8. /proc <span style="font-family:宋体">伪文件系统,该目录本身是一个虚拟文件系统;是系统内存的映射存放的数据都是在内存当中,可直接通过访问这个目录来获取当前系统的相关信息;如系统核心、进程信息、网络状态等,该目录本身不占任何硬盘空间。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-81.png" title="1429025511106946.png" alt="blob.png" /></p> <p> 9. /sys <span style="font-family:宋体">该目录与</span>/proc<span style="font-family:宋体">非常类似也是一个虚拟文件系统,主要包括目前已加载的核心模块和内核所识别到的硬件设备信息等</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-3.png" title="1429025526124623.png" alt="blob.png" /></p> <p> 10. /boot <span style="font-family:宋体">该目录放置开机系统启动引导时会使用到的文件,包括内核和</span>ramdisk<span style="font-family:宋体">(</span>CentOS 5:initrd<span style="font-family:宋体">,</span>CentOS 6<span style="font-family:宋体">:</span>initramfs<span style="font-family:宋体">),</span>grub<span style="font-family:宋体">(</span>bootloader <span style="font-family:宋体">引导加载器)等</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-33-1.png" title="1429025538540127.png" alt="blob.png" /></p> <p> 11. /mnt <span style="font-family:宋体">用来临时挂载某些额外的设备,这个目录的用途与</span>/media<span style="font-family:宋体">相同,只是有了</span>/media<span style="font-family:宋体">之后,这个目录就用来作为临时挂载使用了</span></p> <p> 12. /media <span style="font-family:宋体">放置的是可移动或便携的装置,例如软盘、光盘、</span>DVD<span style="font-family:宋体">等</span></p> <p> 13. /tmp <span style="font-family:宋体">用户临时文件存放位置,让一般用户或者是正在执行的程序暂时存放文件的目录,这个目录是任何人都能够访问存取的,重要数据不可放置在此目录。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-46.png" title="1429025553137965.png" alt="blob.png" /></p> <p> 14. /srv service<span style="font-family:宋体">的缩写,当前系统上一些服务启动之后所用到的数据存放的目录,例如</span>WWW<span style="font-family:宋体">服务所需要的网页资料就可以放置在</span>/srv/www <span style="font-family:宋体">里面</span></p> <p> 15. /opt <span style="font-family:宋体">第三方应用程序的安装目录为早期</span>Linux<span style="font-family:宋体">版本使用,现在第三方应用程序的安装目录为</span>/usr/local</p> <p> 16. /var variable<span style="font-family:宋体">的缩写,就是在系统运行后才会逐渐占用硬盘容量的目录,主要放置一些经常变动的文件以及某些软件运行时产生的临时文件等,常见的交目录有:</span>/var/cache<span style="font-family:宋体">,</span>/var/lib<span style="font-family:宋体">,</span>/var/log<span style="font-family:宋体">,</span>/var/mail<span style="font-family:宋体">,</span>/var/spool<span style="font-family:宋体">等</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-18.png" title="1429025563132697.png" alt="blob.png" /></p> <p> 17. /misc <span style="font-family:宋体">备用目录,放置杂项不便归档分类的文件</span></p> <p> 18. /selinux <span style="font-family:宋体">与</span>Security Enhanced Linux <span style="font-family:宋体">安全加强的</span>Linux<span style="font-family:宋体">功能相关的文件存放目录</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-22.png" title="1429025577111577.png" alt="blob.png" /></p> <p> 19. /lost+found <span style="font-family:宋体">这个目录在使用</span>ext2/ext3<span style="font-family:宋体">文件系统格式才会产生的一个目录,用于在当文件系统发生错误时,将一些遗失的片段放置到这个目录下,一般位置磁盘分区的根目录下</span></p> <p> </p> <p style="text-indent:28px"><span style="font-family: 宋体">需要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的磁盘分区中去,有以下</span>5<span style="font-family: 宋体">个目录:</span></p> <p style="text-indent:28px"><strong>/etc /bin /dev /lib /sbin</strong></p> <p><span style="font-size: 18px"><strong><span style="font-family: 宋体">工作目录、家目录概念</span></strong></span></p> <p> <span style="font-family: 宋体">由于</span>Linux<span style="font-family: 宋体">一切皆文件的哲学思想,当用于登录系统后每时每刻都是处在一个目录中的,而用户当前所处的目录就称为工作目录(</span>working directory<span style="font-family: 宋体">),又称为当前目录(</span>current directory<span style="font-family: 宋体">),在任何时候命令行模式下可以通过命令</span>pwd <span style="font-family: 宋体">显示当前所处的工作目录</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-15.png" title="1429025608690244.png" alt="blob.png" /></p> <p> <span style="font-family: 宋体">家目录:用户登录系统后默认所处的目录,而</span>root<span style="font-family: 宋体">和普通用户家目录有所不同,</span>root<span style="font-family: 宋体">管理员的家目录为</span>/root<span style="font-family: 宋体">,而普通用户的家目录则是在</span>/home<span style="font-family: 宋体">目录下,以当前用户名称命令的一个目录,如普通用户</span>test<span style="font-family: 宋体">的家目录就是</span>/home/test<span style="font-family: 宋体">这个目录。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163707-65.png" title="1429025622961984.png" alt="blob.png" /></p> <p> </p> <p><strong style="font-size: 18px"><span style="font-family: 宋体">总结:</span></strong></p> <p> <span style="font-family: 黑体, SimHei"><strong>要深刻理解Linux的哲学思想;理解根文件系统、Linux层次化结构的文件系统;了解FHS和Linux标准的文件结构下常见的目录</strong></span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信