文章目录

  • 1 介绍
    • 1.1 目的
  • 2 文件系统
    • 2.1 区别
  • 3 根文件系统
    • 3.1 目的
    • 3.2 基本原因
    • 3.3 文件
    • 3.4 命令
    • 3.5 /boot
      • 3.5.1 目的
    • 3.6 /dev
      • 3.6.1 目的
    • 3.7 /etc
      • 3.7.1 目的
      • 3.7.2 组成
    • 3.8 /home
      • 3.8.1 目的
      • 3.8.2 要求
    • 3.9 /lib
      • 3.9.1 目的
    • 3.10 /media
      • 3.10.1 目的
      • 3.10.2 特定选项
    • 3.11 /mnt
      • 3.11.1 目的
    • 3.12 /opt
      • 3.12.1 目的
    • 3.13 /root
      • 3.13.1 目的
    • 3.14 /sbin
      • 3.14.1 目的
      • 3.14.2 要求
      • 3.14.3 特定选项
    • 3.15 /srv
      • 3.15.1 目的
    • 3.16 /tmp
      • 3.16.1 目的
    • 3.17 笔记
  • 4 usr 层级制度
    • 4.1 目的
    • 4.2 文件
  • 5 var 层级制度
    • 5.1 目的
    • 5.2 文件
    • 5.2 文件

Filesystem Hierarchy Standard

文件系统等级制度标准(文件系统层级标准)

Filesystem Hierarchy Standard Group

1 介绍

1.1 目的

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

总结为两点:

统一结构

方便使用

2 文件系统

静态文件和变量文件应该分开,因为静态文件不同于变量文件,可以存储在只读媒体上,不需要按照与变量文件相同的计划备份。

历史类UNIX文件系统层次结构在/usr和/etc下同时包含静态和变量文件,为了实现上述优点,创建了/var层次结构,并将所有变量文件从/usr传输到/var。因此/usr现在可以以只读方式挂载(如果它是一个单独的文件系统)。在技术允许的情况下,变量文件从/etc传输到/var的时间更长。

可共享的文件可以存储在一个主机上,并在其他几个主机上使用。但是,通常不是文件系统层次结构中的所有文件都可以共享,因此每个系统都有至少包含其不可共享文件的本地存储。如果系统所需的存储在外部主机上的所有文件都可以通过从外部主机装载一个或几个目录而变得可用,那么这是很方便的。

2.1 区别

  • 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
  • 不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了.
  • 不变的:有些数据是不会经常变动的,跟随着distribution而不变动. 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
  • 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等.
可共享的 不可共享
不变的(static) /usr (软件放置处) /etc (配置文件)
/opt (第三方协力软件) /boot (开机与核心档)
可变动的(variable) /var/mail (使用者邮件信箱) /var/run (程序相关)
/var/spool/news (新闻组) /var/lock (程序相关)

3 根文件系统

3.1 目的

根文件系统的内容必须足以引导、还原、恢复和/或修复系统。

  • 要引导系统,根分区上必须有足够的空间来装载其他文件系统。这包括实用程序、配置、引导加载程序信息和其他重要的启动数据。/usr、/opt和/var的设计使它们可以位于其他分区或文件系统上。
  • 为了恢复和/或修复系统,由经验丰富的维护人员进行诊断所需的实用程序
    重建根文件系统上必须存在损坏的系统。
  • 恢复系统,根文件系统上必须存在从系统备份(软盘、磁带等)恢复所需的实用程序。

3.2 基本原因

  1. 用来平衡这些考虑因素的主要关注点是保持根文件系统尽可能小,这有利于将许多东西放在根文件系统上。出于几个原因,最好保持根文件系统较小:

    • 偶尔从非常小的介质安装。
    • 根文件系统包含许多特定于系统的配置文件。可能的例子包括特定于系统的内核、特定的主机名等,这意味着根文件系统并不总是可以在网络系统之间共享。在网络系统的服务器上保持较小的空间可以最大限度地减少不可共享文件区域的空间损失。它还允许工作站使用较小的本地硬盘驱动器。
    • 虽然根文件系统可能位于一个较大的分区上,而且可能能够将其填满内容方面,会有分区更小的人。如果您安装了更多文件,您可能会发现与使用较小分区上的根文件系统的其他系统不兼容。如果您是一个开发人员,那么您可能会将您的假设变成大量用户的问题。
    • 根文件系统上损坏数据的磁盘错误比任何其他分区上的错误都是一个更大的问题。较小的根文件系统不太容易因系统崩溃而损坏。
  2. 禁止创建根文件系统的新子目录有几个原因

    • 它需要根分区上的空间,系统管理员可能希望出于性能或安全原因使根分区保持小而简单。
    • 避免系统管理员为跨可装入卷分发标准文件层次结构而设置的任何规程

3.3 文件

  • bin 基本命令二进制文件
  • boot 引导加载程序的静态文件
  • dev 设备文件
  • etc 特定于主机的系统配置
  • lib 基本共享库和核心模块
  • media 可移动介质的安装点
  • mnt 临时挂载文件系统的挂载点
  • opt 附加应用程序软件包
  • sbin 基本系统二进制文件
  • srv 本系统提供的服务数据
  • tmp 临时文件
  • usr 次级层次结构
  • var 可变数据

3.4 命令

命令 描述
cat 将文件连接到标准输出的实用程序
chgrp 更改文件组所有权的实用程序
chmod 更改文件访问权限的实用程序
chown 更改文件所有者和组的实用程序
cp 用于复制文件和目录的实用程序
date 打印或设置系统数据和时间的实用程序
dd 转换和复制文件的实用程序
df 用于报告文件系统磁盘空间使用情况的实用程序
dmesg 用于打印或控制内核消息缓冲区的实用程序
echo 显示一行文本的实用程序
false 效用不做任何事,失败
hostname 显示或设置系统主机名的实用程序
kill 向进程发送信号的实用程序
ln 在文件之间建立链接的实用程序
login 在系统上开始会话的实用程序
ls 列出目录内容的实用程序
mkdir 创建目录的实用程序
mknod 生成块或字符特殊文件的实用程序
more 在文本中翻页的实用程序(less)
mount 挂载文件系统的实用程序
mv 移动/重命名文件的实用程序
ps 用于报告进程状态的实用程序
pwd 打印当前工作目录名称的实用程序
rm 删除文件或目录的实用程序
rmdir 删除空目录的实用程序
sed “sed”流编辑器
sh shell
stty 更改和打印终端线设置的实用程序
su 更改用户ID的实用程序
sync 刷新文件系统缓冲区的实用程序
true 实用工具不做任何事,成功
umount 卸载文件系统的实用程序
uname 打印系统信息的实用程序

3.5 /boot

/boot:引导加载程序的静态文件

3.5.1 目的

此目录包含启动过程所需的所有内容,启动时不需要的配置文件和映射安装程序除外。因此/boot存储在内核开始执行用户模式程序之前使用的数据。这可能包括保存的主引导扇区和扇区映射文件

3.6 /dev

/dev:设备文件

3.6.1 目的

/dev目录是特殊或设备文件的位置。

3.7 /etc

/etc:特定于主机的系统配置

3.7.1 目的

/etc层次结构包含配置文件。“配置文件”是用于控制程序操作的本地文件;它必须是静态的,不能是可执行的二进制文件

3.7.2 组成
目录 说明
opt /opt的配置
X11 X窗口系统的配置(可选)
sgml SGML的配置
xml XML的配置

3.7.3 /etc/

文件 描述
csh.login 用于C shell登录的系统范围初始化文件
exports NFS文件系统访问控制列表
fstab 关于文件系统的静态信息
ftpusers FTP后台程序用户访问控制列表
gateways 列出路由网关的文件
gettydefs gett使用的速度和终端设置
group 用户组文件
host.conf 解析程序配置文件
hosts 有关主机名的静态信息
hosts.allow TCP包装器的主机访问文件
hosts.deny TCP包装器的主机访问文件
hosts.equiv rlogin、rsh、rcp的受信任主机列表
hosts.lpd lpd的受信任主机列表
inetd.conf inetd的配置文件
inittab init的配置文件
issue 预登录消息和标识文件
ld.so.conf 要搜索共享库的额外目录列表
motd 日文件登录后消息
mtab 关于文件系统的动态信息
mtools.conf mtools的配置文件
networks 有关网络名称的静态信息
passwd 密码文件
printcap lpd打印机功能数据库
profile sh shell登录的系统范围初始化文件
protocols IP协议列表
resolv.conf 解析程序配置文件
rpc RPC协议列表
securetty 根登录的TTY访问控制
services 网络服务的端口名
shells 有效登录shell的路径名
syslog.conf syslogd的配置文件

3.8 /home

/home:用户主目录

3.8.1 目的

/home是一个相当标准的概念,但它显然是一个特定于站点的文件系统。设置将因主机而异。因此,任何程序都不应依赖于此位置。

3.8.2 要求

应用程序的用户特定配置文件存储在用户主目录中以“.”字符开头的文件(“点文件”)中。如果应用程序需要创建多个点文件,则应将它们放在以“.”字符开头的子目录(“点目录”)中。在这种情况下,配置文件不应以“.”字符开头。

3.9 /lib

/lib:基本共享库和内核模块

3.9.1 目的

/lib目录包含启动系统和在根文件系统中运行命令所需的共享库映像,即通过/bin和/sbin中的二进制文件。

3.10 /media

/media:可移动介质的安装点

3.10.1 目的

此目录包含用作可移动媒体(如软盘、CDROM和zip磁盘)的装入点的子目录。

3.10.2 特定选项
目录结构 描述
floppy 软驱
cdrom 光驱
cdrecorder CD刻录机
zip zip驱动

3.11 /mnt

/mnt:临时挂载文件系统的挂载点

3.11.1 目的

提供此目录是为了让系统管理员可以根据需要临时挂载文件系统。此目录的内容是本地问题,不应影响任何程序的运行方式。
安装程序不得使用此目录:必须使用系统未使用的适当临时目录。

3.12 /opt

/opt:附加应用程序软件包

3.12.1 目的

/opt保留用于安装附加应用程序软件包。
要安装在/opt中的包必须在单独的/opt/中找到其静态文件,或者
/opt/目录树,其中是描述软件包和
是提供者的LANANA注册名。

3.13 /root

/root:根用户的主目录(可选)

3.13.1 目的

根帐户的主目录可能由开发人员或本地首选项确定,但这是建议的默认位置。

3.14 /sbin

/sbin:系统二进制文件

3.14.1 目的

用于系统管理的实用程序(以及其他仅限根用户的命令)存储在/sbin、/usr/sbin和/usr/local/sbin中。/除了/bin中的二进制文件外,sbin还包含启动、还原、恢复和/或修复系统所必需的二进制文件。已知挂载/usr之后执行的18个程序(当没有问题时)通常放在/usr/sbin中。本地安装的系统管理程序应放在/usr/local/sbin中

3.14.2 要求

shutdown 命令关闭系统

3.14.3 特定选项
命令 描述
fastboot 在不检查磁盘的情况下重新启动系统
fasthalt 在不检查磁盘的情况下停止系统
fdisk 分区表操纵器
fsck 文件系统检查和修复实用程序
fsck.* 特定文件系统的文件系统检查和修复实用程序
getty The getty program
halt 停止系统的命令
ifconfig 配置网络接口
init 初始过程
mkfs 构建文件系统的命令
mkfs.* 生成特定文件系统的命令
mkswap 设置交换区域的命令
reboot 重新启动系统的命令
route IP路由表实用程序
swapon 启用分页和交换
swapoff 关闭分页和交换
update 守护进程定期刷新文件系统缓冲区

3.15 /srv

/srv:本系统提供服务的数据

3.15.1 目的

/srv包含此系统提供的站点特定数据

3.16 /tmp

/tmp:临时文件

3.16.1 目的

必须为需要临时文件的程序提供/tmp目录。
程序不能假定在调用程序之间/tmp中的任何文件或目录都被保留

3.17 笔记

  1. 不需要放入/bin的命令二进制文件必须放入/usr/bin。
    只有非根用户(X窗口系统、chsh等)才需要的项通常不足以放入根分区。

  2. 安排引导加载程序能够引导文件所需的程序必须放在/sbin中。
    引导加载程序的配置文件必须放在/etc中。
    GRUB bootloader在引导之前读取其配置文件,因此必须将其放在/boot中。但是,它是一个配置文件,所以应该在/etc中。

  3. 由于硬件限制,在某些i386计算机上,可能需要将/boot放在位于完全低于引导设备的1024M。
    某些MIPS系统需要一个/boot分区,该分区是一个挂载的MS-DOS文件系统或固件可以访问的任何其他文件系统类型。这可能会对/boot中的可用文件名造成限制(仅适用于受影响的系统)。

  4. 建议将文件存储在/etc的子目录中,而不是直接存储在/etc中。

  5. 使用shadow密码套件的系统将在/etc(/etc/shadow和其他)和/usr/sbin(useradd、usermod和其他)中有其他配置文件。

  6. 在某些Linux系统上,这可能是指向/proc/mounts的符号链接,在这种情况下不需要此异常。

  7. /etc/X11/xdm保存xdm的配置文件。这些以前是在/usr/lib/X11/xdm。xdm的一些局部变量数据存储在/var/lib/xdm中。

  8. 在小型系统上,每个用户的目录通常是/home的许多子目录之一,例如**/home/smith**;
    大型系统上的home/torvalds、/home/operator等。

  9. 建议除了自动保存和锁定文件外,程序应避免在没有用户干预的情况下在主目录中创建非点文件或目录

  10. 只有/usr中的二进制文件(如任何X窗口二进制文件)所需要的共享库不能在/lib中。只**有在/bin和/sbin中运行二进制文件所需的共享库可以在这里。**特别是,如果/bin或/sbin中的任何内容都不需要libm.so.*库,它也可以放在/usr/lib中。

4 usr 层级制度

4.1 目的

/usr是文件系统的第二个主要部分。/usr是可共享的只读数据。这意味着/usr应该可以在不同的FHS兼容主机之间共享,并且不能写入。任何特定于主机或随时间变化的信息都存储在其他位置。

4.2 文件

  • bin 大多数用户命令
  • include C程序包含的头文件
  • lib 图书馆
  • local 本地层次结构(主安装后为空)
  • sbin 非重要系统二进制文件
  • share 独立于体系结构的数据

5 var 层级制度

5.1 目的

var包含变量数据文件。这包括假脱机目录和文件、管理和日志数据,以及临时和临时文件。
/var的某些部分不能在不同系统之间共享。例如,var/log、var/lock和/var/run。其他部分可以共享,特别是/var/mail、/var/cache/man、/var/cache/fonts和var/spool/news。
此处指定var是为了使以只读方式装载usr成为可能。曾经的一切在系统运行期间(与安装和软件维护相反)写入的内容必须在/var中。
如果/var不能成为一个单独的分区,通常最好将/var从根分区移到/usr分区。(有时这样做是为了减小根分区的大小,或者在
但是,不能将var链接到/usr,因为这样会分离/usr和/var更困难的是,可能会产生命名冲突。相反,将/var链接到/usr/var。
应用程序通常不能将目录添加到/var的顶层。只有在它们具有一些系统范围的含义,并与FHS邮件列表协商。

5.2 文件

  • cache 应用程序缓存数据
  • lib 可变状态信息
  • local /usr/local的变量数据
  • lock 锁定文件
  • log 日志文件和目录
  • opt /opt的变量数据
  • run 与运行进程相关的数据
  • spool 应用程序假脱机数据
  • tmp 系统重新启动期间保留的临时文件

统运行期间(与安装和软件维护相反)写入的内容必须在/var中。
如果/var不能成为一个单独的分区,通常最好将/var从根分区移到/usr分区。(有时这样做是为了减小根分区的大小,或者在
但是,不能将var链接到/usr,因为这样会分离/usr和/var更困难的是,可能会产生命名冲突。相反,将/var链接到/usr/var。
应用程序通常不能将目录添加到/var的顶层。只有在它们具有一些系统范围的含义,并与FHS邮件列表协商。

5.2 文件

[外链图片转存中…(img-auR4gyMk-1581405172456)]

  • cache 应用程序缓存数据
  • lib 可变状态信息
  • local /usr/local的变量数据
  • lock 锁定文件
  • log 日志文件和目录
  • opt /opt的变量数据
  • run 与运行进程相关的数据
  • spool 应用程序假脱机数据
  • tmp 系统重新启动期间保留的临时文件

FHS 文件系统的理解相关推荐

  1. 对嵌入式Linux中的根文件系统的理解和解析

    虽然前面已经利用Busybox制作了根文件系统,但是对于根文件系统的作用和普通的文件系统之间的区别还是有点模糊.通过查找资料总结了一 下对根文件系统的理解,也欢迎大家一起讨论.    首先要明白的是& ...

  2. 深入理解linux文件系统( 理解inode与block,理解硬链接软链接,掌握恢复误删文件及其分析方法,掌握用户日志及其查询命令 )

    文章目录 深入理解linux文件系统 前言 inode与block详解 inode和bolck概述 1:数据(block)块: 2:元信息 : inode(索引节点) inodu的内容 Linux系统 ...

  3. Linux 中的FHS文件系统风格标准---File Hierarchy Standard

    文件系统层次标准(Filesystem Hierarchy Standard,FHS):规范了在根目录下各个主要目录应该放什么样的文件. linux的目录配置:根据FHS定义,每个目录内应该放置的文件 ...

  4. Linux文件系统层级标准fhs,文件系统层次标准(FHS)简介

    原标题:文件系统层次标准(FHS)简介 当你好奇地看着系统的根目录(/)的时候,可能会发现自己有点不知所措.大多数三个字母的目录名称并没有告诉你它们是做什么的,如果你需要做出一些重要的修改,那就很难知 ...

  5. linux程序安装opt还是mnt,FHS文件系统各目录功能

    前言 FHS将文件根据不同的用途和特性分成了可共享的(shareable)和不可共享的(unshareable),可变的(variable)和静态的(static).不同的文件位于不同的目录里面,将目 ...

  6. FHS—文件系统层次结构标准

    文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)定义了类UNIX操作系统下文件和目录放置的要求和准则,由 Linux 基金会维护. 大多数类 Unix 操作系 ...

  7. Linux根目录结构介绍(FHS文件系统)

    目录 1.bin(/usr/bin) 目录 2.boot目录 3.dev 目录 3.1./dev/console 3.2./dev/zero 3.3./dev/null 3.4./dev/random ...

  8. linux 文件理解,对linux中文件系统的理解

    首先在linux系统当中一个可被挂在的数据为一个文件系统 1.在安装linux过程中我们要进行磁盘分区,可以分根目录'/','/home','/boot',swap等等这些分区,每一个分区('/(根目 ...

  9. 谷歌文件系统GFS理解

    前言:          GFS是由Google设计并实现的一个可扩展的分布式文件系统,它适用于大型分布式计算密集型应用程序.与一般分布式文件系统具有诸多相同点,如性能.可伸缩性.可靠性和可用性,它的 ...

最新文章

  1. linux下gdb使用core文件调试程序,解决“段错误核心已转储“的问题
  2. android 活动外的类,Android – 活动外的startActivityForResult?
  3. python大小写转换if_python代码实例大小写转换,首字母大写,去除特殊字符
  4. element ui dialog 对话框设置fullscreen_UI设计中的弹窗设计素材,技巧快get起来
  5. linux程序调试命令strace
  6. Dev C++详细配置
  7. 执行了rm-f,除了跑路,如何恢复?
  8. SQL--查询无记录,显示默认一条记录
  9. java修炼之道_《Java程序员修炼之道》
  10. 用户 'sa' 登录失败。 连接SQL2000出现的问题。
  11. 计算机应用基础教程学什么,[电脑基础知识]计算机应用基础教程学习.ppt
  12. ITIL问题管理流程设计
  13. Hello Ragel -- 生成状态机的神器
  14. 模式与数据库与表的关系
  15. HTML5期末大作业:网上鲜花网站设计——网上鲜花网页设计(5页)HTML+CSS+JavaScript web期末作业设计网页
  16. 写给大学男同胞的几条择偶建议
  17. understand中几个重要的工具
  18. linux查看cpu核数命令,centos查看CPU以及核数命令
  19. Python中的GPS轨迹聚类
  20. 网络计算机win7为啥连不上,浅析win7旗舰版64位系统网络连接不上的解决方法

热门文章

  1. ZYNQ + Linux
  2. wxPython的安装
  3. scala的 case class与class的区别
  4. 无兄弟,不编程!在兄弟连我学到的不仅仅是PHP
  5. vxwork任务切换分析
  6. 红外线测温仪方案开发
  7. 高等数学(第七版)同济大学 习题11-6 个人解答
  8. 格与布尔代数(笔记)
  9. eft join 是left outer join的区别
  10. 梅雪争春未肯降,词客骚人费评章。不是一番寒彻骨,哪得梅花扑鼻香。