Linux FHS结构

news2024/12/28 17:42:44

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

FHS_2.3标准文档:https://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.pdf

定义

FHS定义了两层规范。

第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。你能想象,你进入一个企业之后,所接触到的Linux目录配置方法竟然跟你以前学的完全不同吗?很难想象。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。

第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

特点介绍

由于FHS仅是定义出最上层(/)及子层(/usr, /var)的目录内容应该要放置的文件数据,因此,在其他子目录层级内,就可以随开发人员自行配置了。举例来说,FC4的网络设置数据放在/etc/sysconfig/network-script/目录下,但SuSE Server 9则是将网络放在/etc/sysconfig/network/目录下,目录名称是不同的。

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

目录树的起始点为根目录(/, root)。需要为根目录单独创建一个分区,即根分区(相当于C盘(系统盘))。

每一个目录不仅能使用本地端分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。

每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

此外,根据文件名写法的不同,也可将路径(path)定义为绝对路径(absolute)与相对路径(relative)。

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

相对路径为相对于当前路径的文件名写法。例如./home/dmtsai或../../home/dmtsai/等等。

反正开头不是/ 就属于相对路径的写法。必须要了解,相对路径是以“当前所在路径的相对位置”来表示的。举例来说,当前在/home目录下,如果想要进入/var/log目录时,怎么写呢?

cd /var/log(absolute)

cd ../var/log(relative)

因为在/home中,所以要回到上一层(../)之后,才能继续向/var移动。

特别注意这两个特殊的目录:

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

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

.与..的目录概念很重要,你常常会看到cd ..或 ./command之类的命令方式,就是表示上一层与当前所在目录的工作状态。此外,针对“文件名”与“完整文件名(由/ 开始写起的文件名)”的字符限制大小为:

单一文件或目录的最大容许文件名为255个字符。包含完整路径名称及目录(/)的完整文件名为4096个字符。

我们知道,/var/log/下面有个文件名为message,这个message文件的最大文件名可达255个字符。var与log这两个上层目录最长也分别可达255个字符。但总的来说, /var/log/messages这样完整的文件名最长则可达4096个字符。

提示:root在Linux里面的意义很多。如果从“账号”的角度来看,root指“系统管理员”身份,如果以“目录”的角度来看,root指的是根目录,就是/ 。要特别注意。

文件系统的目录结构:

  • 文件和目录被一个组织成一个单根倒置树结构
  • 文件系统从根目录下开始,用“/”表示
  • 根文件系统(rootfs):root filesystem
  • 标准Linux文件系统(如:ext4),文件名称大小写敏感
  • 以 . 开头的文件为隐藏文件
  • 路径用 / 分隔
  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 蓝色-->目录     绿色-->可执行文件     红色-->压缩文件    浅蓝色-->链接文件     灰色-->其他文件
  • 除了斜杠和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。

  • 每个文件都有两类相关数据:元数据:metadata,即属性, 数据:data,即文件内容

2、默认的基本目录结构如下:

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录

/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序

/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc:配置文件目录

/home/USERNAME:普通用户家目录

/root:管理员的家目录

/media:便携式移动设备挂载点

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

/dev:设备文件及特殊文件存储位置

          b: block device,随机访问

          c: character device,线性访问

/opt:第三方应用程序的安装位置

/srv:系统上运行的服务用到的数据

/tmp:临时文件存储位置

/usr: universal shared, read-only data

        bin: 保证系统拥有完整功能而提供的应用程序

        sbin:

        lib:32位使用

        lib64:只存在64位系统

        include: C程序的头文件(header files)

        share:结构化独立的数据,例如doc, man等

        local:第三方应用程序的安装位置

                          bin, sbin, lib, lib64, etc, share

/var: variable data files

        cache:应用程序缓存数据目录

        lib:应用程序状态信息数据

        local:专用于为/usr/local下的应用程序存储可变数据

        lock:锁文件

        log:日志目录及文件

        opt:专用于为/opt下的应用程序存储可变数据

        run:运行中的进程相关数据,通常用于存储进程pid文件

        spool:应用程序数据池

        tmp:保存系统两次重启之间产生的临时数据

/proc: 用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置

3、文件系统结构总结:

  • Linux的目录中只有一个根目录/
  • Linux的各个目录存放的内容是规划好的,不要乱放文件。
  • Linux是以文件的形式管理设备的,因此Linux系统中一切皆为文件。
  • Linux的各个文件目录下存放什么内容,需要有一个准确的认识。

 4、文件类型

使用命令查看文件,首字母会标记该文件的文件类型,有以下几种类型:

  •  : 普通文件
  • d: 目录文件
  • b:块文件
  • c:字符文件
  • l:符号链接文件
  • p:管道文件pipe
  • s:套字节文件socket

 

FHS定义了两层规范:第一层是 / ,第二层是针对 /usr 和 /var 这两个目录的子目录来定义的。

/dev 设备目录

/etc 配置文件以及服务启动的目录

/etc/init.d 存放系统或服务器以system v 模式启动的脚本

/etc/sysconfig/network-scripts/ifcfg-eth0 设置网卡 /etc/init.d/network restart ; ifdown eth0;

/etc/sysconfig/network 可修改机器名及网卡启动,网关等配置

/etc/resolv.conf 设置linux本地的客户端DNS的文件

/etc/hosts 设定用户IP与名字的对应表

/etc/fstab 记录开机要mount的文件系统的一个文件

/etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel及加载相关的启动文件设置。

/etc/rc.local 存放开机自启动程序命令的文件。(chkconfig)

/etc/exports 设定NFS网络文件系统用的配置文件。

/etc/xinit.d 如果服务器是通过xinitd模式运行的,他的脚本存放在这里。

/etc/profile 系统全局环境变量配置路径。

/etc/profile.d 加载系统登录程序一个目录,命令或文件独立存在。

/etc/skel 存放新用户配置文件目录

/proc 显示内核及进程信息虚拟文件系统

/tmp 临时文件目录

/home 普通用户家目录

/var 变化目录,一般是日志文件目录。

/usr 用户程序及数据,帮助文件等目录。

/usr/bin 应用程序

/usr/share 数据文件,帮助

/usr/local 存放用户自己安装的程序,相当于c:/program files ,一般编译软件的时候默认路径,yum或rpm包安装默认路径一般不是这里。

/usr 存放unix系统商开发的程序。

/opt 存放第三方厂商开发的程序。

/etc/motd 设置警告信息

参考:Linux:FHS标准 - 幸福框架 - 博客园 

百度百科-验证

Linux FHS结构 - Steven_shl - 博客园

百度安全验证

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

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

相关文章

格式化输出

1、golang不同输出语句的区别: 特点PrintPrintlnPrintf输出内容到控制台(终端输出)SprintSprintlnSprintf输出内容为字符串FprintFprintlnFprintf输出内容到文件特点 输出内容不会换行。 不能格式化字符串。 输出内容换行,。 不能格式化字符…

【C语言进阶】枚举与联合体

目录一:枚举1.1:枚举类型的定义:1.1:枚举的优点:1.2:枚举的使用:二:联合(共用体)2.1:联合类型的定义:2.2:联合类型的特点&…

cin、cin.getline(arr, size)、getline(cin, str)

一、cin使用空白(空格、制表符、换行符)来确定字符串的截止位置 注意下方这段代码 使用cin来接收姓名和甜点名,当我的名字长度大于一个单词长度时,cin直接按空格进行接收,将我输入的xiao接收到name中,wei接…

swiftUI coreml deeplabv3去除背景

现在手机的性能越来越好,好多深度学习的框架都能能够跑在手机上。因此就集成一下一个官方的深度学习model试一下。 其他的框架生成的模型都能通过相应的工具转换成mlmodel用,转换也比较简单。 下面以替换图像去背景为例,不过官方模型这个效果…

概论_第3章_二维随机变量__边缘概率密度

边缘概率密度是二维随机变量中的重点内容, 经常作为一个重要的考点, 必须掌握。一 定义对二维随机变量(X, Y) ,分量X, 或者Y的概率密度称为 (X, Y)的边缘概率密度,简称边缘密度,记为 或者 。边缘密度 或者 可由 二维随机变量的密…

什么是pod(容器组)

pod(容器组) 术语中英文对照: 英文全称英文缩写中文翻译PodPod容器组ContainerContainer容器ControllerController控制器 什么是 Pod 容器组? Pod(容器组)是 Kubernetes 中最小的可部署单元。一个 Pod&a…

基于FPGA的UDP 通信(六)

引言 前文链接: 基于FPGA的UDP 通信(一) 基于FPGA的UDP 通信(二) 基于FPGA的UDP 通信(三) 基于FPGA的UDP 通信(四) 基于FPGA的UDP 通信(五)…

【Spring6源码・AOP】AOP源码解析

上一篇《【Spring6源码・AOP】代理对象的创建》,我们知道了代理是如何创建的,那么它又是如何工作的呢? 创建完代理对象之后,最终,会真正的执行我们的目标方法,但是步入该方法,会进入cglib代理类…

ET框架关于opCode的理解

因为所有的网络消息在发送时候格式都是这样 对于用Protobuf定义的每一消息类型class,都需要定义一个对应消息头code在发送的时候,先将消息体进行序列化,再将code进行序列化,进行组装发送 //这个代码没有进行过优化,会产…

大衣哥给儿媳买回来烟花,是准备加入河南炮击山东大战吗

自从取得抗疫阶段性胜利后,国人就再也难以按捺激动的心情,都想通过放烟花以示庆祝。河南山东属于搭界的两个省,最近就因为放烟花,闹出来不小的笑话,有人甚至戏称炮击事件。 事情的起因是这样的,河南因为地处…

maven的build节点配置

虽然一直在使用maven,但是对于maven的配置还没有深入的了解过。本文以build节点为切入点,主要解释相关maven打包使用到的一些基础配置。 文章目录build节点常用插件spring-boot-maven-pluginmaven-jar-pluginmaven-dependency-plugin注意事项build节点 …

基于javaweb的会议管理系统源码+数据库,javaEE会议管理系统源码

guihaiyidao_git 介绍 javaEE工程 普通的javaEE工程,用idea打开工程即可运行 服务器用的是Tomcat 8.5.722 数据库用的Oracle xe版 数据库可视化工具使用的是PLSQL 相关软件 需要可从百度网盘中获取 链接:https://pan.baidu.com/s/1ZrmfsvQEA4dIP0GF_p…

CSS 布局 - 水平 垂直对齐

CSS 布局 - 水平 & 垂直对齐 那么怎样设置居中对齐呢? 我们可以用margin: auto来设置水平居中对其元素。auto可以防止 元素的宽高溢出,而且也可以平均分配两边的空白。 举例说明: .center {padding: 23px;border: 5px solid red;width: 41%;margin: auto; }那…

【数据结构】单向链表的原理及实现

1.什么是单链表 链表里的数据是以节点的方式表示的,每一个结点的组成是由:元素指针来组成的,元素就是存储数据里的存储单元,指针就是用来连接每一个结点的地址数据。这个以结点的序列来表示线性表被称作为单链表。 单链表是一种…

牛客寒假算法集训营1 补题

标题迷惑大赏 A、World Final? World Cup! 题目描述 众所周知,2022年是四年一度的世界杯年,那么当然要整点足球题。本题需要你模拟一次点球大战。 假设对战双方为A和B,则点球大战中双方会按照ABABABABAB方式来罚点球,即两队交…

【闪电侠学netty】第7章 数据载体ByteBuf的介绍

1. 内容概要 1.1 总结 1.1.1 内存管理 Netty 使用的是堆外内存,需要手动释放,使用引用计数的方式管理内存,当引用计数 0,回收ByteBuf 底层内存 原则:谁使用retain() , 谁释放release() 1.1.2 创建ByteBuf的方式 B…

ASCII码,字符,字符串三者之间的关系

程序调试中遇到问题:在使用sprintf 函数,在转换字符串时,如果遇到0时,会自动认为是结束标志,0以后的内容不会被添加进来。复习一下字符串:一. ASCII码是什么?ASCII 全称为 ( American Standard …

【2023更新】通过硬件触发信号实现OAK多相机之间的同步拍摄

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

经典文献阅读之--NeRF-SLAM(单目稠密重建)

0. 简介 最近几年随着深度学习的发展,现在通过深度学习去预估出景深的做法已经日渐成熟,所以随之而来的是本文的出现《Real-Time Dense Monocular SLAM with Neural Radiance Fields》。这篇文章是一个结合单目稠密SLAM和层次化体素神经辐射场的3D场景重…

【自学Docker 】Docker管理命令大全(下)

文章目录Docker kill命令Docker kill命令概述Docker kill命令语法Docker kill命令参数案例使用容器 ID 杀掉容器使用容器名杀掉容器Docker kill命令总结Docker rm命令Docker rm命令概述Docker rm命令语法Docker rm命令参数案例删除已停止的容器删除正在运行的容器Docker rm命令…