文件系统层级结构标准(FHS)
参考资料:FHS
简介
FHS目前发展到3.0版本,发布于2015年6月3日,由Linux基金会在负责维护。它规定了Linux的文件层级结构,使得各Linux发行版、软件开发商知道应该将哪些文件放在哪些目录下,也方便了用户去查找。
根文件系统:/
根文件系统用于引导、还原(restore)、恢复(recovery)、和/或修复(repair)系统。
根文件系统要在合理范围内设计得尽可能的小巧。
禁止在根文件系统下创建文件或者目录。
根下必须存在的目录
/bin
binary
必要的二进制命令程序。
一般是包含了系统管理员和普通用户都可以执行的命令。不可以包含子目录。
/boot
此目录包含了引导操作系统时候的需要的任何文件,不包括引导时候不需要的配置文件以及映射安装器(map installer)。因此boot目录中存储的数据是在内核开始执行用户空间程序之前就会被用到。这可能会包含主引导扇区和扇区映射文件。
如果某个程序需要被引导装载程序用于引导某个文件的话,那么它必须被放置在/sbin目录下。在引导时非必须的引导装载程序所使用的配置文件必须被放置在/etc目录下。
操作系统内核必须被放置在/或者/boot目录下。
某些特定的架构可能会在/boot目录下有自己特有的要求,比如放一些自己专属的文件等。
/dev
device
用于放置特殊或者设备文件;设备文件有分为字符设备(键盘等)和块设备(硬盘等)。
如果在/dev目录中的设备需要手工创建的话,那么/dev目录下必须有MAKEDEV命令用于创建设备。可能还会包含MAKEDEV.local文件用于本地设备。
如有必要,MAKEDEV必须有能力在系统上创建所有可能被发现的设备,而不仅仅针对某个特定的发行版上所能发现的设备。
/etc
etc目录用于存放配置文件。它是一个层级结构。配置文件是用于控制程序的行为的本地文件;它必须是静态的并且不可以是可执行的二进制程序。
一般建议将配置文件放置在/etc的子目录下,例如/etc/nginx/或者/etc/ssh/,而不是直接放置在/etc目录下。
/lib
library
包含了/bin和/sbin所需要的共享库以及内核模块。
在/lib目录下至少可以看到以下某一种文件名模式(它们可以是文件或者字符链接):
- libc.so.*:动态链接的C库。
- ld*:执行时链接器/装载器。
如果相关的子系统有安装的话,那么可能还会存在modules目录,用于存放可加载的内核模块。
/media
此目录下的子目录用于便携式媒体的挂载点,例如软盘(/media/floppy)、光盘(/media/cdrom)、刻录机(/media/cdrecorder)和zip驱动(/media/zip)。
/mnt
mount
系统管理员临时挂载的的文件系统。此目录的内容是本地问题,不应该影响任何在运行的程序。
/opt
optional
用于存放应用程序软件包的插件。
被安装在/opt目录中的软件包,必须将其静态文件放置在单独的/opt/或者/opt/目录树下。表示软件包的名称,例如mysql;表示提供商在LANANA注册的名称。
在CentOS 7中,这个目录基本是空的。CentOS系列基本不会使用到此目录,不太需要关注。
/run
运行中的进程相关的数据,主要用于存放进程的PID文件。PID文件的文件名必须是.pid的格式,例如crond的PID文件是/run/crond.pid。
/run目录所提供的功能,以前是由/var/run所提供的。由于向后兼容性的存在,应用程序使用/var/run也是允许的。但是不可以两个都使用。在CentOS 7上,/var/run --> ../run。
普通用户不应该对/run目录具备写的权限。
/sbin
系统管理员所使用的二进制程序,存放于/sbin、/usr/sbin和/usr/local/sbin。
此目录下不可以有子目录。
/src
为系统服务所提供的数据。
在CentOS 7上,此目录是空的。
/tmp
临时文件
/usr
/usr目录是仅次于根目录的第二大层级结构。它是共享的、只读的。意味着它在FHS兼容的主机间是应该被共享的并且不可以被写入。任何主机特定的或者随时间变化的数据应该被存储在其他的地方。
多数软件包不可以直接使用/usr下的子目录。
以下目录是必须的:
- bin:大多数用户二进制程序。
- lib:库文件。
- local:本地的一个层级结构,在主安装之后是空的。
- sbin:非关键的系统二进制程序。
- share:架构独立的数据。man手册即位于此目录下/usr/share/man/。
/var
/var目录包含变化的数据文件。包含spool目录和文件,管理性的和日志数据,以及短暂的临时的文件。
/var目录的某些部分无法在系统间共享。例如,/var/log、/var/lock和/var/run。其他部分是可以共享的,尤其是/var/mail、/var/cache/man、/var/cache/fonts和/var/spool/news。
这里说明的/var是为了使得可以只读挂载/usr。任何事物一旦在系统操作的时候被写入/usr,那么就一定会存在于/var中(与安装和软件维护完全不同)。
如果/var不是一个独立的分区的话,那么更倾向于将/var移出根分区,放入/usr分区(通常这么做是为了减小根分区的空间或者当根分区剩余空间不足的时候)。无论如何,不可以将/var链接至/usr,这样会使得/var和/usr难以独立存在,而且有可能会造成命名冲突。取而代之的是,可以将/var链接至/usr/var。
应用程序通常不应该在/var的子目录下创建目录。这类的目录应该当且仅当具备一些系统范围的牵连,并与FHS邮件列表协商只有,才可以添加。
/var/lib
这个目录需要留意。这里的lib并不是library的缩写,并不是表示库文件。这里面存储的是应用程序的状态信息数据。状态信息数据指的是应用程序在运行时会改动的数据,并且属于某个特定的主机。
根下可选的目录
/home
普通用户家目录,它是一个可选的目录,并非每一个发行版都会包含。因此应用程序不应该存放在该目录下。
用户特有的针对某个应用程序的配置文件存放在用户家目录中,文件名以“.”开始(隐藏文件)。如果某个应用程序需要放置的隐藏配置文件不止一个,那么就应该创建一个隐藏目录。隐藏目录里面的配置文件就不需要是隐藏的了。
/lib
一般是lib64,根据操作系统的位数决定是否存在此目录。
/root
root用户家目录
重要的虚拟文件系统
/proc:内核和进程信息虚拟文件系统。
proc文件系统是实际上的用于处理进程和系统信息的标准Linux方法,而不是/dev/kmem和其他类似的方法。我们强烈建议将此目录作为存储和检索进程、内核以及内存信息的目录。
/sys:内核和系统信息虚拟文件系统。
sys文件系统存放的是关于设备、驱动程序和一些内核特性的信息。它的底层结构由当前使用的Linux内核决定,在其他方面没有明确规定。
文件系统层级结构标准(FHS)的更多相关文章
- fhs文件系统层级结构
文件系统:操作系统用于明确存储设备或分区上的文件的方法和数据结构:层次化管理文件的结构就是文件系统: linux层次化文件结构,倒树状结构文件结构 FHS filesystem hie ...
- Linux系统层级结构标准
Linux Foundation有一套标准规范: FHS: Filesystem Hierarchy[‘haɪərɑːkɪ] Standard(文件系统层级标准)目前最新的标准是2.3版本:http: ...
- Linux文件系统的层级结构
Linux文件系统的层级结构 文件结构 倒置的树状结构 :Linux的哲学思想是一切皆文件,把几乎所有资源统统抽象为文件形式:包括硬件设备,甚至通信接口等 根目录 :linux的文件起始均从唯一的 ...
- 【Linux相识相知】计算机的组成、linux发行版和哲学思想、基础命令和目录结构(FHS)
从今天开始,Frank将开始在博客上记录自己学习linux的点点滴滴,F初来乍到,还望各位大佬多多指教.本次博客的主要内容如下: 计算机基础:简要的描述了计算机的组成及其功能: linux初识:介绍了 ...
- ROS-2 : ROS系统层级结构
一.ROS文件系统层级 ROS的文件和文件夹按如下层级来组织:
- Android文件系统的结构
Android 4.2.2 版本的文件系统 内核版本为 3.0.31 版本号为JDQ39 factory//估计是存放网络通信协议的登录密钥的|-- bluetooth|-- hdcp.keys|-- ...
- 4.Linux文件系统层次体系标准
这是不完整的linux文件系统层次体系标准,不是所有Linux发行版都根据这个标准,但大多数都是: 目录 评论 / 根目录,万物起源. /bin 包含系统启动和运行所必须的二进制程序. /boot 包 ...
- iOS-获取UIView的全部层级结构
在iOS中获取UIView的全部层级结构 应用场景 在实际 iOS 开发中,非常多时候都须要知道某个 UI 控件中包括哪些子控件,而且分清楚它们的层级结构和自个的 frame 以及 bounds ,以 ...
- 在iOS中获取UIView的所有层级结构 相关
在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便 ...
随机推荐
- 程序员 & 设计师都能用上的 75 份速查手册
分享75份开发人员和设计师会用到的速查手册,由 vikas 收集整理,包括:jQuery.HTML.HTML5.CSS.CSS3.JavaScript.Photoshop .git.Linux.Jav ...
- android安全技术技能清单
大部分android apk都是在裸奔.大部分android程序员,有一些懂得代码混淆,然而,这东西也不靠谱.除去第三方提供的服务的服务的话,大部分android apk就是在裸奔.不过,使用第三方的 ...
- noip2012 P1081 开车旅行
小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i 和城市 j ...
- 【BZOJ】2434: [Noi2011]阿狸的打字机 AC自动机+树状数组+DFS序
[题意]阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小写 ...
- 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二
上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子 ...
- 如何编写 Typescript 声明文件
使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的. TypeScript之所以叫Type,和它的强类型是分 ...
- 41 - 数据库-pymysql41 - 数据库-pymysql-DBUtils
目录 1 Python操作数据库 2 安装模块 3 基本使用 3.1 创建一个连接 3.2 连接数据库 3.3 游标 3.3.1 利用游标操作数据库 3.3.2 事务管理 3.3.3 执行SQL语句 ...
- SVC 工作过程中出现的错误记录(SEO项目)
1.同一のキーを含む項目が既に追加されています.追加的项目中含有重复主键) /seo' アプリケーションでサーバー エラーが発生しました. 同一のキーを含む項目が既に追加されています. 説明: 現在の ...
- Python列表(list)
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素 ...
- git clone命令使用
git clone命令使用 分类: 项目构建2013-06-26 15:43 38660人阅读 评论(2) 收藏 举报 GitClone git clone 命令参数: usage: git clon ...