【GT-240x】Linux文件路径FHS标准

文章目录

  • 一、说明
  • 二、Linux的初始目录一览表
    • 2.1 Linux的根目录
    • 2.2 FHS(Filesystem Hierarchy Standard)标准
  • 三、常见目录揭示
    • 3.1 /usr目录(存放系统/用户安装的应用程序相关文件)
    • 3.2 /usr/share
    • 3.3 /usr/local
    • 3.4 /usr/bin
    • 3.5 /usr/sbin
    • 3.6 /usr/local/bin
    • 3.7 /usr/local/bin
    • 3.8 /usr/local/sbin
    • 3.9 /opt目录(存放第三方软件)
    • 3.10 /opt与/usr/local的区别
    • 3.11 /bin目录
    • 3.12 /sbin目录
    • 3.13 /sbin和/usr/sbin本质上的不同
    • 3.14 /boot目录(保存开机所需文件)
    • 3.15 /dev目录(存放设备与接口)
    • 3.16 /etc目录(存放配置文件)
    • 3.17 /root目录(存放管理员用户家目录数据)
    • 3.18 /home目录(存放非管理员用户家目录数据)
    • 3.19 /lib和/bin64目录(存放库文件)
    • 3.20 /var目录(存放经常发生变动的文件)
    • 3.21 /media目录(存放挂载设备文件)
    • 3.22 /tmp目录(存放临时共享文件)
    • 3.23 /src目录(存放服务数据)
    • 3.24 /proc目录(存放系统运行状态)
  • 四、Linux 路径
  • 五、一些问题
  • 问题1:安装的程序文件放在哪里?
  • 问题2:挂载设备文件放在哪里?

一、说明

对于linux安装后的基础目录到底代表什么?这对于不太熟悉linux的朋友来说,是一个很值得揭示的谜题。由于Linux也是发展中,这些目录内涵越来越混乱,官方不得已推出【FHS标准】,本篇将详细揭示这些目录的意义。

二、Linux的初始目录一览表

2.1 Linux的根目录

/usr目录(存放系统/用户安装的应用程序相关文件)
/opt目录(存放第三方软件)
/bin目录(存放系统预装的命令-所有人都可以使用)
/sbin目录(存放系统预装的命令-存放管理员才可以使用的命令)
/boot目录(保存开机所需文件)
/dev目录(存放设备与接口)
/etc目录(存放配置文件)
/root目录(存放管理员用户家目录数据)
/home目录(存放非管理员用户家目录数据)
/lib和/bin64目录(存放库文件)
/var目录(存放经常发生变动的文件)
/media目录(存放挂载设备文件)
/tmp目录(存放临时共享文件)
/src目录(存放服务数据)
/proc目录(存放系统运行状态)
/lost+found目录

在Windows操作系统查找文件时,需要进入文件所在的磁盘分区(盘符-C盘、D盘等),然后再进入该分区下的具体目录,最终找到这个文件
在Linux没有盘符的概念,Linux的一切文件都是从根(/)目录开始的
什么是根目录
在Linux中,根(/)目录是位于文件系统目录结构的顶层,所有的文件、目录都要从这个目录延续下去;即linux的文件和目录结构是以一个树的结构来组织的
以根目录为源,根据FHS协议划分出来每个子目录的作用,根据每个子目录的作用来存放文件或目录
这样操作的话,当我们需要寻找某个/某类文件时会比较方便,缩小了寻找范围

2.2 FHS(Filesystem Hierarchy Standard)标准

FHS—Filesystem Hierarchy Standard。
文件系统层次结构标准( FHS ) 是描述类 Unix系统布局惯例的参考。它因在Linux 发行版中的使用而广受欢迎,但它也被其他类 Unix 系统使用。[ 1 ]它由Linux 基金会维护。最新版本是 3.0,于 2015 年 6 月 3 日发布。

典型的Ubuntu文件系统层次结构
在 FHS 中,所有文件和目录都出现在根目录 /下,即使它们存储在不同的物理或虚拟设备上。其中一些目录仅在安装了 某些子系统(例如X Window 系统)时才存在于特定系统中。

大多数这些目录存在于所有类Unix操作系统中,并且通常以相同的方式使用;但是,这里的描述是专门用于 FHS 的,对于 Linux 以外的平台不具有权威性。

目录 描述
/ 整个文件系统层次结构的 初级层次根和根目录。
/bin 在单用户模式下需要可用的基本命令二进制文件,包括启动系统或修复系统,[ 3 ]适用于所有用户(例如,cat,ls,cp)。
/boot 引导加载程序文件(例如kernels、initrd)。
/dev 设备文件( 例如/dev/null,,,,,,)/dev/disk0。 /dev/sda1/dev/tty/dev/random
/etc 主机特定的系统范围配置文件。关于名称本身的含义一直存在争议。在贝尔实验室的 UNIX 实施文档的早期版本中,/etc它被称为etcetera目录,[ 4 ]因为这个目录历来包含不属于其他地方的所有内容(但是,FHS 限制/etc为静态配置文件,可能不包含二进制文件)。[ 5 ]自早期文档发布以来,目录名称已以各种方式重新解释。最近的解释包括“可编辑文本配置”或“扩展工具箱”等反向缩写。 [ 6 ]
/etc/opt 存储在中的附加包的配置文件/opt。
/etc/sgml 处理SGML的软件的配置文件,例如目录。
/etc/X11 X Window 系统版本 11的配置文件。
/etc/xml 处理XML的软件的配置文件,例如目录。
/home 用户的主目录,包含已保存的文件、个人设置等。
/lib 和中的二进制文件所必需的库。 /bin/sbin
/lib 替代格式必备库。这些通常用于支持多种可执行代码格式的系统,例如支持32 位和64 位版本指令集的系统。此类目录是可选的,但如果存在,则有一些要求。
/media CD-ROM等可移动媒体的挂载点(出现在 2004 年的 FHS-2.3 中)。
/mnt 临时挂载的文件系统。
/opt 附加应用 软件包。[ 7 ]
/proc 虚拟文件系统以文件形式提供进程和内核信息。在 Linux 中,对应于procfs挂载。通常由系统动态自动生成和填充。
/root root用户的主目录。
/run 运行时变量数据:自上次启动以来的运行系统信息,例如当前登录的用户和正在运行的守护进程。此目录下的文件必须在启动过程开始时删除或截断,但在将此目录作为临时文件系统(tmpfs )提供的系统上,这不是必需的(出现在 2015 年的 FHS-3.0 中)。
/sbin 基本系统二进制文件(例如,fsck、init、route)。
/srv 该系统提供的特定站点数据,例如 Web 服务器的数据和脚本、FTP服务器提供的数据以及版本控制系统的存储库(2004 年出现在 FHS-2.3 中)。
/sys 包含有关设备,驱动程序和一些内核功能的信息。[ 8 ]
/tmp 临时文件目录(另请参阅/var/tmp)。通常在系统重启后不会保留,并且可能受到严重大小限制。
/usr 只读用户数据的二级层次结构;包含大多数(多)用户实用程序和应用程序。应可共享且只读。[ 9 ] [ 10 ]
/usr/bin 非必要的命令二进制文件(单用户模式下不需要);适用于所有用户。
/usr/include 标准包含文件。
/usr/lib 和中的二进制文件的库。 /usr/bin/usr/sbin
/usr/libexec 由其他程序运行的二进制文件,不打算由用户或 shell 脚本直接执行(可选)。
/usr/lib 替代格式的库(例如,/usr/lib32用于 64 位机器上的 32 位库(可选))。
/usr/local 特定于此主机的本地数据的第三层级结构bin。通常有进一步的子目录(例如, ,lib,share)。[ NB 1 ]
/usr/sbin 非必要的系统二进制文件(例如,各种网络服务的守护进程)。
/usr/share 与架构无关的(共享)数据。
/usr/src 源代码(例如,带有其头文件的内核源代码)。
/usr/X11R6 X Window System,版本 11,发行版 6(最高至 FHS-2.3,可选)。
/var 可变文件:在系统正常运行期间,其内容预计会不断变化,例如日志、假脱机文件和临时电子邮件文件。
/var/cache 应用程序缓存数据。此类数据是耗时的 I/O 或计算在本地生成的。应用程序必须能够重新生成或恢复数据。缓存文件可以删除而不会丢失数据。
/var/lib 状态信息。程序运行时修改的持久数据(例如数据库、包装系统元数据等)。
/var/lock 锁定文件。跟踪当前正在使用的资源的文件。
/var/log 日志文件。各种日志。
/var/mail 邮箱文件。在某些发行版中,这些文件可能位于已弃用的 中/var/spool/mail。
/var/opt 存储在中的附加包中的变量数据/opt。
/var/run 运行时变量数据。此目录包含描述系统自启动以来的系统信息数据。在 FHS 3.0 中,/var/run被 取代/run;系统应该继续提供目录,或者提供从到/var/run的符号链接,以实现向后兼容。/var/run/run
/var/spool 等待处理的任务的 假脱机(例如,打印队列和传出邮件队列)。
/var/spool/mail 弃用用户邮箱的位置。[ 13 ]
/var/tmp 重启之间要保留的临时文件。

三、常见目录揭示

3.1 /usr目录(存放系统/用户安装的应用程序相关文件)

主要用来存放系统预装的应用程序(即安装系统自带的应用程序)
也可以为用户保存一定数据(保存用户安装的软件数据,用户安装的命令、用户安装的库等)

3.2 /usr/share

放置帮助和说明文件夹,也可以放置共享文件.
事实上,它/usr应该在多台机器和用户之间共享,但这无助于理解这里“共享”一词的用法,它的意思是跨不同的架构共享。

3.3 /usr/local

用户自行安装的软件默认存放的位置(一般存放在该目录下的/usr/local/bin文件夹)

3.4 /usr/bin

默认存放所有用户都可以使用系统预装的应用程序,会随着系统升级而改变存放着系统安装自带的一些可执行程序(即系统程序)此目录一般不会做修改,修改可能会影响系统启动等.

3.5 /usr/sbin

默认存放只有管理员用户才可用的系统预装的应用程序存放着系统安装自带的一些可执行程序

3.6 /usr/local/bin

默认存放所有用户都可用的第三方软件程序(不会随着系统升级而被覆盖)
存放着第三方软件程序(即用户自己安装的应用程序),此目录一般可以做修改

3.7 /usr/local/bin

下的程序优先级高于/usr/bin

3.8 /usr/local/sbin

默认存放只有管理员用户才可用的第三方软件程序存放着第三方软件程序

3.9 /opt目录(存放第三方软件)

存放第三方软件(用户自行安装的软件)的目录,同/usr/local

3.10 /opt与/usr/local的区别

/usr/local 用户安装软件的默认目录(可以理解为C:/Program Files)
/opt 用户安装软件时手工指定的目录(可以理解为D:)

3.11 /bin目录

(存放系统预装的命令-所有人都可以使用).主要用来存放系统的基本的命令相关文件(二进制文件),常用命令都存放在此处普通用户和管理员用户都可以访问并执行的的可执行程序保存在此目录
例如:cat、cp、chmod、su、tar、rm、mount等
/bin和/usr/bin本质上的不同
/bin目录存放的是命令文件(较小的执行文件);命令文件是系统本身的一部分
/usr目录存放的是应用程序的执行文件;应用程序是为了实现特定的功能和任务而设计的软件(有些应用程序提供的执行文件能够像Linux命令一样运行,所以也被称为程序命令)

3.12 /sbin目录

(存放系统预装的命令-存放管理员才可以使用的命令)存放着基本的系统命令(二进制文件),只有管理员可以执行
例如:reboot、shutdown等

3.13 /sbin和/usr/sbin本质上的不同

一个存储的是命令文件;一个存储的是应用程序的执行文件

3.14 /boot目录(保存开机所需文件)

保存开机所需的文件(保存开机引导文件/驱动、grup引导、内核等),一般不修改
一般boot目录是一个独立的分区,通常大小100~200M之间

3.15 /dev目录(存放设备与接口)

以文件形式存放任何设备和接口,然后将设备挂载到相应目录在此文件下,通过udev服务来更加细节的划分每个文件的作用(即不同的设备有不同的文件名格式)
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-z]
virtio(虚拟)设备 /dec/vd[a-z] 例如KVM就是
软驱(盘) /dev/fd[0-1]
光驱(盘)/镜像文件 /dev/cdrom
打印机 /dev/lp[0-15]
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0
串口 /dev/ttyS[0-3]
并口 /dev/lp[0-3]
虚拟终端 /dev/ttty[0-63]
/dev/mouse文件是关于鼠标的底层配置(对于鼠标亮灯、蓝牙连接等属于软件配置,通过软件包来实现的,而不是通过/dev/mouse此文件来实现的),所以此文件基本不会修改

3.16 /etc目录(存放配置文件)

存放着系统的管理和配置文件,也存放着用户自行安装软件的配置文件
通过yam或二进制安装的程序的配置文件的默认目录
即:大部分配置文件都存放在/etc
不过有些例外:例如DNS的服务的配置文件就存放在/var/named
当需要修改系统的配置时可以在此文件夹下面操作
/etc/hostname 修改和查看linux主机名称,永久修改,重启生效
/etc/hosts 修改系统中IP地址和主机名称的映射信息(类似于DNS解析)
/etc/service 修改系统服务的默认端口
/etc/sysconf/network-scripts/ifcfg-ens160 修改系统网卡
/etc/release或/etc/system-release 修改系统信息
/etc/profile 修改全局环境变量
/etc/locale.cong 修改系统语言

3.17 /root目录(存放管理员用户家目录数据)

保存管理员的家目录数据(也称为主目录-保存用户的私密文件,其它用户无法访问)

3.18 /home目录(存放非管理员用户家目录数据)

存放非管理员用户的家目录数据(非管理员用户的家目录数据,会以用户的用户名来创建一个目录保存此用户的家目录)
即:如果一个用户名是xxx,则在home目录下就有一个对应的/home/xxx目录,用来保存xxx用户的家目录数据

3.19 /lib和/bin64目录(存放库文件)

存放调用函数库的文件,很多命令或程序需要的库函数文件都保存在此目录(让计算机正常工作),一般不可动

3.20 /var目录(存放经常发生变动的文件)

存放经常发生变动的文件(其它目录都是根据目录的功能或作用划分的,此目录是根据目录特性划分的)
像/var/log日志数据、/var/spool定时任务信息等一般会存放在此目录

3.21 /media目录(存放挂载设备文件)

用于挂载设备文件,关联挂载移动存储介质的目录(例如 光盘、硬盘、U盘、存储卡等)要想使用硬盘资源,就需要将此硬盘与目录做一个挂载操作
注意:由于挂载的介质一般不只一个,所有通常会在该目录下创建子目录来挂载对应的移动存储介质

3.22 /tmp目录(存放临时共享文件)

用于存放任何人均可使用的“共享”临时文件
此目录的默认一般权限为777,特殊权限为SBIT

3.23 /src目录(存放服务数据)

保存网络服务的数据文件(主要用来存储本机提供的服务数据)

3.24 /proc目录(存放系统运行状态)

此目录是系统内存的映射,是一个伪(虚拟)文件系统
该目录的数据只存在于内存当中,并不占用外存(硬盘)空间
它以文件系统的方式为访问系统内核数据的操作体提供接口
当去查找或者删除、复制这个文件是会报错,因为此文件不是真实的
比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/lost+found目录

当文件系统发现错误时,将一些丢失的文件片段存放在这里
只有ext3文件系统以及之后的系统才会有/lost+found 文件(RHEL5之前是ext2文件系统,并没有日志功能,也就没有此目录)

四、Linux 路径

Linux通过路径来定位某个文件/目录,具体由两种定位方式
绝对路径
对于用户此时所在的位置没有要求,不论在哪里都可以找到此文件
相对路径
对于用户此时所在的位置有要求,只有在某个位置时才可以找到此文件
可以更加快去找到某个文件
如何区分是绝对路径还是相对路径
从/开始的都是绝对路径(cd /etc/hostname)
没有从/开始,为相对路径(cd hostname 前提是必须已经在/etc目录下)

五、一些问题

问题1:安装的程序文件放在哪里?

在Linux系统中,安装的软件通常被放置在 /usr/bin 目录下。这是系统的二进制文件存放的默认目录,安装的软件的可执行文件通常会被放置在这个目录下。另外,一些软件也会被安装在 /usr/sbin 目录下,这是系统管理员使用的系统命令目录。如果是从源代码编译安装的软件,可能会安装在 /usr/local/bin 或 /usr/local/sbin 目录下。

问题2:挂载设备文件放在哪里?

上一篇:【PostgreSQL】实战篇——用户管理、角色和权限控制的高级用法及技巧


下一篇:PostgreSQL的扩展Citus介绍