文件系统层级结构标准(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 ,以便 ...
随机推荐
- spring-boot Test for Controller
spring-boot controller 测试示例: 单元测试类 package com.zzhi; import com.fasterxml.jackson.databind.ObjectMa ...
- opencv的基本数据结构(一)(转)
从2001年以来,opencv的函数库一直是基于C接口构建的,因此在opencv1.0版本中,一般使用IplImage的C结构体在内存中存储图像,因此,我们在很多较经典的书籍或者开源项目中依然可见Ip ...
- 【译】第四篇 Integration Services:增量加载-Updating Rows
本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...
- 树形dp(B - Computer HDU - 2196 )
题目链接:https://cn.vjudge.net/contest/277955#problem/B 题目大意:首先输入n代表有n个电脑,然后再输入n-1行,每一行输入两个数,t1,t2.代表第(i ...
- 洛谷 P4592: bzoj 5338: [TJOI2018]异或
题目传送门:洛谷P4592. 题意简述: 题面说的很清楚了. 题解: 发现没有修改很快乐.再看异或最大值操作,很容易想到可持久化 01trie. 这里要把 01trie 搬到树上,有点难受. 树剖太捞 ...
- Dom解析XML文件具体用法
public class Dom4j { public static void main(String[] args) throws Exception { List<Student> l ...
- Imperva正则表达式的添加以及使用
Imperva正则表达式的添加以及使用 1.添加字典 创建策略 模拟访问产生告警
- MODULE_DEVICE_TABLE【转】
转自:http://blog.csdn.net/tangkegagalikaiwu/article/details/8444249 This pci_device_id structure needs ...
- C#基础学习之StreamReader和StreamWriter
StreamReader和StreamWriter操作字符的 FileStream操作字节的 //使用StreamReader读取文件 using (StreamReader sr=new Strea ...
- Jenkins+Ant+TestNG+Testlink自动化构建集成
这段时间折腾自动化测试,之前都是在Eclipse工程里面手工执行自动化测试脚本,调用Testlink API执行测试用例,目前搭建Jenkins自动化构建测试的方式,实现持续构建,执行自动化测试. 硬 ...