FHS(Filesystem Hierarchy Standard 文件系统层次化标准)

文章目录

  • 一、根目录 (/) 的意义与内容
  • 二、/usr/ 的意义与内容
  • 三、/var/ 的意义与内容
  • 四、目录树(directory tree)
  • 五、绝对路径与相对路径

FHS 是 File System Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux 版本采用这种文件组织形式,类似于 Windows 操作系统中 c 盘的文件目录,FHS 采用树形结构组织文件。FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。

根据 FHS(Filesystem Hierarchy Standard) 的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。

FHS 针对目录树架构仅规定了三个目录下应该放置什么数据:

  1. / (根目录):与开机系统有关;

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

  3. /var/ (variable):与系统运作过程有关。

由于 FHS 仅是定义出最上层(/)及次层(/usr/, /var/)的目录内容应该要放置的文件或目录数据, 因此,在其他次目录层级内,就可以随开发者自行来配置了。

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

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

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

要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载。因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。

哪些目录不可与根目录分开呢?如下这些:

/etc:配置文件

/bin:重要执行档

/dev:所需要的设备文件

/lib:执行档所需的函式库与核心所需的模块

/sbin:重要的系统执行文件

这五个目录不可与根目录分开在不同的分区。

二、/usr/ 的意义与内容

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

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

因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的C:\Windows\ + C:\Program files\这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。

三、/var/ 的意义与内容

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

四、目录树(directory tree)

在Linux底下,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头, 然后再一个一个的分支下来,因此,我们也称这种目录配置方式为:目录树(directory tree), 这个目录树的主要特性有:

  1. 目录树的启始点为根目录 (/, root)
  2. 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等
  3. 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的

五、绝对路径与相对路径

除了需要特别注意的 FHS 目录配置外,在文件名部分我们也要特别注意。因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样的:

  1. 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc

  2. 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 http://www.cnblogs.com/home/dmtsai/ 等等。反正开头不是 /就属于相对路径的写法。

而你必须要了解,相对路径是以你当前所在路径的相对位置来表示的。举例来说,你目前在 /home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?

cd /var/log    # absolutecd ../var/log  # relative

因为你在 /home 底下,所以要回到上一层 (../) 之后,才能进入到目录 /var 下,特别注意这两个特殊的目录:

  1. .:代表当前的目录,也可以使用 ./ 来表示。

  2. ..:代表上一层目录,也可以 ../ 来代表。

这两个 ... 目录概念是很重要的,你常常会看到 cd .../command 之类的指令下达方式, 一个表示返回到上级目录,一个表示执行当前目录下的一个指令。

**实例1:**如何先进入 /var/spool/mail/ 目录,再进入到 /var/spool/cron/ 目录内?
命令语句如下所示:

cd /var/spool/mail
cd ../cron

说明:
由于/var/spool/mail与/var/spool/cron是同样在/var/spool/目录中。如此就不需要在由根目录开始写起了。这个相对路径是非常有帮助的,尤其对于某些软件开发商来说。 一般来说,软件开发商会将数据放置到/usr/local/里面的各相对目录。 但如果用户想要安装到不同目录呢?就得要使用相对路径。

**实例2:**网络文件常常提到类似 ./run.sh 之类的数据,这个指令的意义为何?

说明:
由于指令的执行需要变量的支持,若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin等为正规),此时要执行指令就得要严格指定该执行档。./ 代表本目录的意思,所以 ./run.sh 代表执行本目录下名为 run.sh 的文件

官方文档地址:
http://www.pathname.com/fhs/

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

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

相关文章

apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...

apache.camel从历史上看, Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的,就像您今天所做的那样。 下一代代理Apache ActiveMQ Artemis(或仅是Artemis)则不是这种情况,后者对大型消息的支…

double小数点后最多几位_用了这么多英语学习APP后,我还是最喜欢这4款

适合系统:安卓、iOS(后台回复「236」获取)学霸君曾经在知乎看到过一个问题:英语近几年会被淘汰吗?现在学英语还有什么用?底下点赞数最多的一个评论:不是英语即将淘汰,而是英语水平差到还需要艰难学英语的人…

mysql 如何凭借几个列_我如何总结MySQL中的几个列

在这种特殊情况下,使用WHERE会不会更容易?SELECT SUM(WTE) AS Band6_WTEFROM orthoptists AS oLEFT JOIN instances AS iON o.instance_FK i.idWHERE i.region 14AND band "E"对于一般情况,您可以使用GROUP BY,因为您…

log4j2自动删除_登录样式:log4j 2,上下文,自动清除…全部不附带任何字符串!...

log4j2自动删除日志记录-保持操作的时间跟踪-对于任何关键任务系统,无论大小,都至关重要。 我们的Project-X框架也是如此 ,这就是为什么我们希望从一开始就正确地做到这一点。 基于我们在传奇的UltraESB上的登录经验, 上下文日志…

Shell(bash) 介绍

文章目录Shell 介绍Shell 种类命令行环境终端模拟器命令行提示符进入和退出方法Shell 脚本第一个shell脚本BashBash如何解析命令Shell 和 Bash 的历史Shell 介绍 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上&am…

mysql 5.7数据库密码_mysql5.7数据库忘记密码的解决方法

mysql5.7数据库忘记密码的解决方法发布时间:2020-09-08 11:56:53来源:亿速云阅读:60作者:小新这篇文章主要介绍了mysql5.7数据库忘记密码的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完…

软件项目报价明细表_BIM必学软件之REVIT

BIM与Revit是什么关系呢?Revit在众多BIM软件中扮演什么角色,有什么意义?今天我们就来说说REVIT。BIM是建筑从项目立项、规划、概算、设计、预算、建造、结算、审计、物业等全生命周期中的智能动态控制系统,俗称建筑智能机器人系统。 BIM的关…

tdd java_适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

tdd java使用类似于BDD的语法,Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是,根据我的培训师经验,我知道(不幸的)这不是常见的做法。 因此,我决定写这篇简短…

Linux 进程状态介绍

文章目录进程状态说明进程状态图进程状态说明 进程主状态:D:不可中断的睡眠状态 uninterruptible sleeping(usually IO)R:正在运行,或在队列中的 running or runnable (on run queue)S:处于休眠状态 interruptible sle…

petalinux 配置_澧县高压管道工厂化配置专业销售

澧县高压管道工厂化配置专业销售 公司生产设备齐全,热处理工艺精湛,检测设备,年生产能力上万吨,具备化学分析、全相检验、物理实验、无损探伤等检测能力。能生产各种标准的不锈钢、合金钢、碳钢弯头、无缝弯管、无缝三通、高压异径…

php mysql刷新表格_php读入mysql数据并以表格形式显示(表单实现无刷新提交)

在网上参考了些例子,于是我这个sample实现了如标题上的功能。话不多说,上代码:lishi.html搜索form#form1 {height: 93%;}p {width: 99%;height: 84%;}iframe#id_iframe {width: 99%;height: 100%;border: 0 red solid;}input{display:block;}…

flowable背压 取消_使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答...

flowable背压 取消RxJava缺少创建无限自然数流的工厂。 这样的流很有用&#xff0c;例如&#xff0c;当您想通过压缩两个事件的顺序来为可能的无限事件流分配唯一的序列号时&#xff1a; Flowable<Long> naturalNumbers //???Flowable<Event> someInfiniteEve…

abstract类_【Java】类的结构 - Nemo

类与对象类中主要包括五种结构&#xff0c;下面进行对这五种结构进行详细的介绍。1. 面向对象与面向过程面向过程&#xff1a;强调的是功能行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。面向对象&#xff1a;强调具备了功能的对象&#xff0c;以类/对象为最小单位…

二元函数可微与可导的关系_多元函数中可微与可导的直观区别是什么?

在多元的情况下&#xff0c;可微可导的关系要比在一元情况下复杂&#xff0c;但是只是要复杂一些&#xff0c;如果我们从一元开始去理解&#xff0c;你会发现并不困难。这篇文章主要阐述以下三个概念&#xff1a;偏微分偏导数全微分全导数这里暂时不讲&#xff0c;看名字好像和…

java 错误输入异常_在Java中进行输入验证期间用错误通知替换异常

java 错误输入异常在我以前的文章中&#xff0c;我写了一篇关于输入验证设计的文章 &#xff0c;该设计取代了难以维护和测试的 if-else块。 但是&#xff0c;正如某些读者指出的那样&#xff0c;它有一个缺点–如果输入数据有多个验证错误&#xff0c;则用户将不得不多次提交请…

Linux 命令之 mkdir 命令-创建目录

文章目录介绍语法格式常用选项参考示例介绍 mkdir 命令是“make directories”的缩写&#xff0c;用来创建目录。如果在目录名的前面没有加任何路径名&#xff0c;则在当前目录下创建目录&#xff1b;如果给出了一个已经存在的路径&#xff0c;将会在该目录下创建一个指定的目…

uniapp app蓝牙打印_给编程器加装蓝牙串口模块,用手机APP操作打印信息进控制台...

公众号回复【编程器】可下载蓝牙串口APP专用蓝牙串口模块购买&#xff1a;https://item.taobao.com/item.htm?id619731291566编程器加装蓝牙模块后&#xff0c;可以方便的使用手机查看打印信息&#xff0c;进入控制台执行各种串口命令。本款蓝牙串口APP具有保存打印信息、分享…

Linux 命令之 rm -- 删除文件和目录

文章目录一、命令介绍二、语法格式三、参考选项四、参考示例&#xff08;一&#xff09;删除当前目录下有内容的子目录&#xff08;二&#xff09;删除当前目录下多个含有内容的子目录&#xff08;三&#xff09;删除当前目录下以特定关键字开头的文件&#xff08;四&#xff0…

mysql报表占容量_MariaDB(MySQL)修改表结构报表空间满

今天数据库表修改表结构&#xff0c;需要添加一列&#xff1a;ALTER TABLE xxxx_learn ADD COLUMN learn_stage_code VARCHAR(32) NULL DEFAULT 99 COMMENT 学段 AFTER qualified_rate;结果一直报错&#xff1a;ERROR 1114 (HY000) at line 303: The table xxxx_learn is full刚…

对话框 函数_通过函数式编程实现动态对话框处理程序

对话框 函数在我以前的文章中&#xff0c;我提到了一个常见的用例&#xff0c;当我们需要以编程方式检查当前事务是否脏了&#xff0c;并在做某件事之前通知用户有关该事务的信息。 就像“您尚未保存的更改将丢失&#xff0c;您要继续吗&#xff1f;”。 假设我们需要在应用程…