1.4 > Linux文件系统基本结构

Linux基础

目录结构

Linux系统将所有的文件都挂载到根目录(” / “)下,形成了一个树形结构,可以通过 ls -a / 或者 cd / && ls -a 查看根目录下的所有一级文件或文件夹。

如果想查看当前目录的树状图情况,使用如下命令:

[root@rocky /]# tree -La 1   	#-L指定显示到第几层,-a指定显示所有文件名
.
├── .autorelabel
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
19 directories, 1 file

由于 Linux 属于开源产品,这使得 Linux 发行版众多,为了避免开发者或使用者对 Linux 系统目录结构的随意解释或修改,Linux 基金会于1994年发布了 FHS 标准(文件系统层次结构标准)。当前最新版为2015年发布的3.0版本。官方网站:https://wiki.linuxfoundation.org/lsb/fhs

此前,多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求。但截至2009年,包括由自由标准小组成员参与开发的版本在内的绝大多数发行版,并不完全执行建议的标准了。

目录释义
/整个文件系统的根目录
/bin需要在单用户模式下可用的命令,且面向所有用户
/boot引导程序文件目录,包含系统内核文件、引导加载程序文件等
/dev设备文件目录,包含系统所有设备文件,如磁盘、键盘等
/etc系统配置文件目录,FHS限制此目录下只存放静态配置文件,而非二进制文件。(注意:此目录名称存在争议,如需了解可查询维基)
/home非root用户的家目录,包含用户个人文件和个人配置
/lib(/lib64)存放系统和应用程序所需要的库和内核模块等
/usr用于存放与用户和系统管理相关的二进制文件、库文件、头文件、共享数据和文档
/rootroot用户的家目录
/media用于临时挂载可移动媒体设备,如U盘、CD等
/mnt临时挂在的文件系统
/opt第三方软件包的安装位置
/proc包含了关于系统状态的各种虚拟文件,用户可以通过读取这些文件获取系统的信息,比如进程信息、系统信息等
/run用于替代/var/run目录,用于临时存储运行时产生的数据,此目录通常挂载在 tmpfs 文件系统上,存储位置在内存中
/sbin存放只有 root 用户才有权限执行的文件
/srv存放各种特定服务的数据,如web、ftp等
/sys此目录为虚拟文件系统,此文件夹提供统一接口,以允许用户空间的应用程序或脚本读写系统设备。在系统启动时将自动挂载
/tmp临时文件目录,系统重启时其中的文件将不会保留
/var存储系统允许中不断变化的数据,如日志、缓存文件等
/usr 目录释义
bin(sbin)用户可执行的二进制文件,sbin仅为root用户可执行
lib(lib64)共享的库文件,包含动态链接库(.so)、静态库文件等
libexec存放由其他应用程序可调用的可执行文件,通常不是由用户调用
include包含 C/C++ 等编程语言引用的头文件
share通常包含以系统架构无关的只读文件,如共享文档、配置文件、引用程序数据等
local用户自行编译安装的软件,用户可将第三方软件安装到此目录,同 /opt 目录类似
src用户下载的源码包保存位置
/var 目录释义
cache存储应用生成的缓存数据,如浏览器缓存、包管理器缓存等
lib存储应用程序的状态信息和持久性数据,如 mysql 的数据文件,rpm 管理器的数据库等
log存放系统和程序的日志文件,记录了系统操作、错误信息等
run几乎已废弃,链接指向 /run 目录
tmp存放临时文件,但与 /tmp 不同的是此目录中的文件生命周期长,重启之后仍存在
spool存放临时任务队列文件,等待处理的任务将放在此处
mail(spool/mail)存储用户的电子邮件
lock存储锁文件,几乎已废弃,链接指向 /run/lock
一切皆文件

在 Linux 和其他类 Unix 系统中,“一切皆文件”的设计哲学是其核心特性之一。这一设计理念旨在简化操作系统的结构和接口,使得资源的访问和管理更加统一和直观。这种设计有许多优点,但也有一些缺点。

  • 有点:

    • 统一接口:通过文件系统进行统一管理,简化了编程模型。程序员只需使用文件操作函数(如 open、read、write、close)即可访问各种资源(如硬件设备、进程间通信、网络连接等)。
    • 简化系统设计:系统调用接口简单,减少了开发和维护操作系统的复杂度。
    • 强大的灵活性和可拓展性:新的资源和功能可以很容易地映射到文件系统中。例如,虚拟文件系统(如 /proc 和 /sys)可以提供动态的系统和进程信息。
    • 管道和重定向:输入输出的重定向和管道操作非常方便。通过标准输入、输出和错误流的重定向,可以轻松实现进程间的数据传输和操作。
    • 权限管理:统一的权限管理机制。文件权限(读、写、执行)和所有权可以直接应用于系统资源。
  • 缺点:

    • 性能开销:文件系统的抽象层可能带来一些性能开销,特别是在处理频繁和高性能要求的操作时。这些开销包括系统调用的开销和文件系统的管理开销。
    • 调试困难:文件系统和资源之间的映射关系有时可能复杂,导致调试和问题排查变得困难。
    • 安全问题:如果不当管理,可能会出现安全漏洞。例如,错误的权限设置可能导致未授权的访问或修改系统资源。
    • 复杂性:有些硬件或资源的特性可能难以通过简单的文件接口表达,需要额外的机制或抽象层来处理。
  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值