5.3 Linux目录配置

news2024/12/23 5:50:15

5.3.1 Linux目录配置的依据--FHS

根据FHS的标准文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的使用者,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。

事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像下面这样:

         

上表中的目录就是一些代表性的目录,该目录下面所放置的数据在下面会谈到,这里先略过不谈。 我们要了解的是,什么是那四个类型?

可分享的:可以分享给其他系统挂载使用的目录,所以包括可执行文件与使用者的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;

不可分享的:自己机器上面运行的设备文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

不变的:有些数据是不会经常变动的,跟随着distribution而不变动。 例如函数库、文件说明文档、系统管理员所管理的主机服务配置文件等等;

可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻群组等。

事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:

/ (root, 根目录):与开机系统有关;

/usr (unix software resource):与软件安装/执行有关;

/var (variable):与系统运行过程有关。

每层目录下面所应该要放置的目录也都有特定的规定。

根目录 (/) 的意义与内容:

根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函数库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。 因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分区内, 因为越大的分区你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。

因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。

有鉴于上述的说明,因此FHS定义出根目录(/)下面应该要有下面这些次目录的存在才好,即使没有实体目录,FHS也希望至少有链接文件存在才好:

目录

应放置文件内容

第一部份:FHS

要求必须要存在的目录

/bin

系统有很多放置可执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin下面的指令可以被root与一般帐号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。

/boot

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

/dev

在Linux系统上,任何设备与周边设备都是以文件的型态存在于这个目录当中的。 你只要通过存取这个目录下面的某个文件,就等于存取某个设备~ 比较重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/loop, /dev/sd等等

/etc

系统主要的配置文件几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有root有权力修改。FHS建议不要放置可可执行文件(binary)在这个目录中。比较重要的文件有: /etc/modprobe.d/,/etc/passwd, /etc/fstab, /etc/issue 等等。另外 FHS 还规范几个重要的目录最好要存在 /etc/ 目录下:/etc/opt(必要):这个目录在放置第三方协力软件 /opt 的相关配置文件 /etc/X11/(建议):与 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server 的配置文件。 /etc/sgml/(建议):与 SGML 格式有关的各项配置文件 /etc/xml/(建议):与 XML格式有关的各项配置文件

/lib

系统的函数库非常的多,而/lib放置的则是在开机时会用到的函数库, 以及在/bin或/sbin下面的指令会调用的函数库而已。 什么是函数库呢?你可以将他想成是“外挂”,某些指令必须要有这些“外挂”才能够顺利完成程序的执行之意。 另外 FSH 还要求下面的目录必须要存在:/lib/modules/:这个目录主要放置可抽换式的核心相关模块(驱动程序)。

/media

media是“媒体”的英文,顾名思义,这个/media下面放置的就是可移除的设备。 包括软盘、光盘、DVD等等设备都暂时挂载于此。常见的文件名有:/media/floppy, /media/cdrom等等。

/mnt

如果你想要暂时挂载某些额外的设备,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同。只是有了/media之后,这个目录就用来暂时挂载用了。

/opt

这个是给第三方协力软件放置的目录。什么是第三方协力软件啊? 举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。 另外,如果你想要自行安装额外的软件(非原本的distribution提供的),那么也能够将你的软件安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。

/run

早期的 FHS 规定系统开机后所产生的各项信息应该要放置到 /var/run 目录下,新版的 FHS 则规范到 /run 下面。 由于 /run 可以使用内存来仿真,因此性能上会好很多

Linux有非常多指令是用来设置系统环境的,这些指令只有root才能够利用来“设置”系统,其他使用者最多只能用来“查询”而已。 放在/sbin下面的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统可执行文件(system binary), 则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, mkfs等等。

/srv

srv可以视为“service”的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。 不过,系统的服务数据如果尚未要提供给网际网络任何人浏览的话,默认还是建议放置到 /var/lib下面即可。

/tmp

这是让一般使用者或者是正在执行的程序暂时放置文件的地方。 这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录啊! 因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除。

/usr

第二层 FHS 设置,后续介绍

/var

第二曾 FHS 设置,主要为放置变动性的数据,后续介绍

第二部份:FHS建议可以存在的目录

/home

这是系统默认的使用者主文件夹(home directory)。在你新增一个一般使用者帐号时, 默认的使用者主文件夹都会规范到这里来。比较重要的是,主文件夹有两种代号:~:代表目前这个使用者的主文件夹 ~dmtsai :则代表 dmtsai 的主文件夹!

/lib

用来存放与 /lib 不同的格式的二进制函数库,例如支持 64 位的 /lib64 函数库等

/root

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

事实上FHS针对根目录所定义的标准就仅有上面的这些,不过我们的Linux下面还有许多目录你也需要了解一下的。 下面是几个在Linux当中也是非常重要的目录:

         

早期 Linux 在设计的时候,若发生问题时,救援模式通常仅挂载根目录而已,因此有五个重要的目录被要求一定要与根目录放置在一起, 那就是 /etc, /bin, /dev, /lib, /sbin 这五个重要目录。现在许多的 Linux distributions 由于已经将许多非必要的文件移出 /usr 之外了, 所以/usr 也是越来越精简,同时因为 /usr 被建议为“即使挂载成为只读,系统还是可以正常运行”的模样,所以救援模式也能同时挂载 /usr 。 例如我们的这个 CentOS 7.x 版本在救援模式的情况下就是这样。因此那个五大目录的限制已经被打破了。例如 CentOS 7.x 就已经将/sbin, /bin, /lib 通通移动到 /usr 下面了。

/usr 的意义与内容:

依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable,static), 如果你知道如何通过网络进行分区的挂载(例如在服务器篇会谈到的NFS服务器),那么/usr确实可以分享给区域网络内的其他主机来使用。

很多读者都会误会/usr为user的缩写,其实usr是Unix Software Resource的缩写, 也就是“Unix操作系统软件资源”所放置的目录,而不是使用者的数据,这点要注意。 FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行创建该软件自己独立的目录。

因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr下面,因此这个目录有点类似Windows 系统的“C:\Windows\ (当中的一部份) + C:\Program files\”这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。一般来说,/usr的次目录建议有下面这些:

目录

应放置文件内容

第一部份:FHS 要求必须要存在的目录

/usr/bin/

所有一般用户能够使用的指令都放在这里!目前新的 CentOS 7 已经将全部的使用者指令放置于此,而使用链接文件的方式将 /bin 链接至此!也就是说, /usr/bin 与 /bin 是一模一样了!另外,FHS 要求在此目录下不应该有子目录!

/usr/lib/

基本上,与 /lib 功能相同,所以 /lib 就是链接到此目录中的!

/usr/local/

系统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版,此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦! 你可以自行到/usr/local去看看,该目录下也是具有bin, etc,include, lib...的次目录

/usr/sbin/

非系统正常运行所需要的系统指令。最常见的就是某些网络服务器软件的服务指令。不过基本功能与 /sbin 也差不多, 因此目前 /sbin 就是链接到此目录中的。

/usr/share/

主要放置只读架构的数据文件,当然也包括共享文件。在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文字文件嘛!在此目录下常见的还有这些次目录:/usr/share/man:线上说明文档 /usr/share/doc:软件杂项的文件说明 /usr/share/zoneinfo:与时区有关的时区文件

第二部份:FHS 建议可以存在的目录

/usr/games/

与游戏比较相关的数据放置处

/usr/include/

c/c++等程序语言的文件开始(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档。

/usr/libexec/

某些不被一般使用者惯用的可执行文件或脚本(script)等等,都会放置在此目录中。例如大部分的 X 窗口下面的操作指令, 很多都是放在此目录下的。

/usr/lib/

与 /lib/功能相同,因此目前 /lib 就是链接到此目录中

/usr/src/

一般源代码建议放置到这里,src有source的意思。至于核心源代码则建议放置到/usr/src/linux/目录下。

/var 的意义与内容:

如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。常见的次目录有:

            

针对FHS,各家distributions的异同,与 CentOS7 的变化

由于FHS仅是定义出最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件或目录数据, 因此,在其他次目录层级内,就可以随开发者自行来配置了。举例来说,CentOS的网络设置数据放在 /etc/sysconfig/network-scripts/ 目录下,但是SuSE则是将网络放置在/etc/sysconfig/network/ 目录下,目录名称可是不同的。不过只要记住大致的FHS标准,差异性其实有限。

此外,CentOS 7 在目录的编排上与过去的版本不同。比较大的差异在于将许多原本应该要在根目录 (/) 里面的目录,将他内部数据全部挪到 /usr 里面去,然后进行链接设置:

/bin --> /usr/bin

/sbin --> /usr/sbin

/lib --> /usr/lib

/lib64 --> /usr/lib64

/var/lock --> /run/lock

/var/run --> /run

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ECS 简略版说明五:Baking and entity scenes

目录 Baking and entity scenes Creating and editing sub scenes Accessing data in a baker Loading and unloading entity scenes Baking and entity scenes Baking 是一个把 sub scenes 转变成 entity scenes 的过程,使用 bakers和 baking systems: A sub …

数据中心供配电监控系统解决方案介绍 安科瑞 许敏

摘 要:供配电系统始终是数据中心比较重要的内容,在供配电系统能够得到平稳安全的运行的时候,才能够促使数据中心的相关设备具有比较可靠的动力源泉。在新型数据中心不断发展的过程中,其功率密度也相对比较大,对供电的要…

销售人员如何通过CRM系统提升业绩

面对日趋激烈的竞争,销售人员的压力也日益剧增。尤其伴随流量红利的消失,越来越多的企业开始借助数字化工具赋能销售人员,希望通过工具的加持,实现销售人才和销售工具的“人器合一”,最终助力企业业绩的增长。 在市场有…

专访虎牙直播毛茂德 | 看互联网老兵如何用技术驱动效能提升?

引言 作为一位经历了互联网、移动互联网阶段的老兵,毛茂德老师一路走来,始终保持自己的技术初心,不断探索未知领域的宽度,进入虎牙直播后,他积极推动虎牙拥抱云原生,进行业务创新,同时他也发挥技…

1. MongoDB快速实战与基本原理

分布式缓存技术Redis 1. MongoDB介绍1.1 什么是MongoDB1.2 MongoDB vs 关系型数据库1.3 MongoDB的技术优势1.4 MongoDB的应用场景 2. 2.MongoDB快速开始2.1 linux安装MorgoDB 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正&a…

基于SpringBoot+mybatis+layui就业管理系统设计和实现

基于SpringBootmybatislayui就业管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文…

【STL】容器适配器

放在专栏【C知识总结】,会持续更新,期待支持 1、什么是适配器? 我们生活中就存在大量的适配器,最常见的莫过于我们常见的电源适配器,它的作用就是将交流电源转化为直流电源进行输出,可以说电源适配器在电流…

618复盘:爆款存当下,蓝海寄未来

价格,贵必赔。优惠,直接减。 号称史上最内卷的一届618在一家又一家号称史上最大补贴的狂欢下,落幕得悄无声息,各大平台默契地都没有公布具体GMV。 这样的结局似乎已有预见。此前有媒体援引浙江大学经济学院教授叶建亮的说法&…

从小白到大神之路之学习运维第47天---第三阶段----Iptables、路由表的配置、Linux下创建虚拟IP

第三阶段基础 时 间:2023年6月26日 参加人:全班人员 内 容: Iptables、路由表的配置、Linux下创建虚拟IP 目录 Iptables 1. 查看 iptables 设置: 2. 开启全部流量: 3. 关闭全部流量: 4. 允许某…

【Jmeter教程】_事务控制器

目录 一、添加事务控制器 二、事务控制器参数说明 三、运用事务控制器 统计性能测试结果一定会关注TPS,TPS表示每秒处理事务数,JMeter默认每个事务对应一个请求。我们可以用逻辑控制器中的事务控制器将多个请求统计为一个事务。 一、添加事务控制器 …

分享 5 个你可能不知道的前端小技巧

大家都知道,如今前端开发是一个充满活力的领域,每天都会涌现出新的技术和最佳实践。 作为前端开发人员,如果你真的想创建引人入胜、直观且响应迅速的用户界面,就必须时刻跟进最新的趋势和技术。 作为前端开发人员,我们…

不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!

在高速高精运动控制领域,数据交互的快慢对产线的生产效率起着重要作用。提升数据交互速度能够实时地接收和处理大量的传感器监控运行数据、运动指令和反馈信息,从而实现更精确的运动控制、速度调整和轨迹规划,进而提高系统的响应时间和稳定性…

LDR6023C 专门为USB-C接口无线领夹式麦克风方案打造

推出领夹式无线麦克风方案,专门为USB-C接口手机打造,兼容性非常的游戏,可让手机同时一边充电一边传输数据。 随着直播平台的兴起,网络直播越来越火, 领夹式直播麦克风得到广泛应用, 现在手机,电…

海睿思分享 | 浅谈企业数据质量问题

一、数据质量问题场景 在日常工作中,业务领导经常通过BI系统来了解各项业务的业绩情况。倘若某天,他打开某张核心报表,发现当日某个区域的数据一直是空白的。BI开发人员经过几个小时的排查分析,发现是当日该区域的销售数据存在产…

VsCode 安装Copilot

1,插件安装 (1)首先我们在 VSCode 里面搜索并安装 Copilot 插件: (2)安装后编辑器右下角会出现一个小机器人图标,并且提示我们需要登录 GitHub 账号: 此时需要科学 目前要收费劝退…

增值税高如何解决?有哪些注意事项?

增值税高如何解决?有哪些注意事项? 《税筹顾问》专注于园区招商、企业税务筹划,合理合规助力企业节税! 咦,增值税高了怎么办?这可是个大问题啊!特别是对于那些经济效益还不错的企业来说&#x…

【Leetcode60天带刷】day37——968. 监控二叉树

​ 题目: 968. 监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1: 输入:[0,0,null,0,0] 输出&#…

校园外卖行业内卷之下,高校外卖创业者如何成为卷王?

伴随着外卖行业的不断发展,校园市场前景广阔。校园外卖市场因各大平台的竞争而变得越来越复杂。各种技术支持和经验参考让大学生创业校园外卖越来越困难,市场竞争也越来越激烈。 校园外卖市场究竟有多内卷? 外卖龙头企业。 校园市场广阔的发…

抖音seo矩阵系统:源码编写及优化策略

开发概述 抖音作为一款流行的短视频分享平台,其搜索引擎优化(SEO)的重要性日益凸显。为了提升抖音账号的曝光率和用户粘性,开发一套抖音SEO矩阵系统源码成为了必不可少的一步。 在编写抖音SEO矩阵系统源码时,需要首先…

企业缺成本票怎么办?

企业缺成本票怎么办? 《税筹顾问》专注于园区招商、企业税务筹划,合理合规助力企业节税! 企业缺成本发票的原因基本都是一样的,不外乎以下这几种: 1.企业类型自身缺陷:成本费用以人员工资、提…