[疯狂linux]从/开始的linux文件目录结构
linux简介
Linux 是一种开源的类 Unix 操作系统,广泛应用于服务器、个人电脑和嵌入式系统,因其稳定性和灵活性而受到欢迎。
Linux的特点:
- 开源:Linux 的源代码是公开的,任何人都可以自由获取、修改和分发,这使得它拥有庞大的开发者社区,推动了其不断发展和创新。
- 稳定性:Linux 被认为是一个性能稳定的操作系统,尤其适合用于服务器环境。
- 多样性:Linux 有许多不同的发行版,如 Ubuntu、Red Hat、CentOS、Debian 等,每个发行版都有其特点和适用场景
- 安全性:Linux 系统通常被认为比其他操作系统更安全,尤其是在服务器和网络环境中,因其权限管理和用户管理机制较为严格。
linux文件系统介绍
linux下一切皆文件,而linux中的一切文件都从/为起点
linux的系统目录简介
用户目录:home与root:
其中root存的是管理员账户的相关文件,home存的是普通用户的相关文件,因为过于容易理解就不再加以赘述
系统命令目录:bin、sbin与opt:
系统命令相关的目录有/bin、/sbin,两者都存放着每个人都会用到的一些日常命令和系统级命令
其中
bin是binary(二进制程序)的简称,而sbin是system binary
下面是两者的区别:
| 对比项 | /bin |
/sbin |
|---|---|---|
| 面向用户 | 所有用户 | 主要是 root 用户 |
| 命令性质 | 普通用户日常使用的基本命令 | 系统管理和系统维护命令 |
| 典型命令 | ls、cp、mv、cat、sh、bash |
fsck、shutdown、reboot、fdisk、mkfs、iptables |
其中/opt存放的是不属于系统核心、由第三方或管理员单独安装的独立软件,里面的软件通常是诸如chrome一样自包含完整目录树结构的大型软件
/opt的好处是能让大型软件的lib不会散落到系统各处,删除时直接删除/opt/<package-name>即可
全称是optional,即附加软件包
共享库目录:lib与lib64:
两个目录存储了/bin和/sbin中二进制文件所需的共享库和内核模块
其中
lib是library
两者的区别是/lib一般存放了32位的共享库,而/lib64存放的是64位的共享库
应用数据目录:run、var与tmp:
| 对比项 | /run |
/var |
/tmp |
|---|---|---|---|
| 全称/含义 | runtime(运行时) |
variable(可变) |
temporary(临时) |
| 存储介质 | tmpfs(内存),重启清空 | 通常为磁盘,持久保留 | 通常为磁盘或 tmpfs,重启清空(视发行版配置) |
| 数据生命周期 | 仅本次启动期间有效 | 长期,跨重启保留 | 短期,重启后清空(/var/tmp 例外) |
| 是否持久化 | 否 | 是 | 否(/tmp);/var/tmp 重启后保留 |
| 典型内容 | PID 文件、Unix socket、锁文件、运行时状态 | 日志(/var/log)、数据库(/var/lib)、缓存(/var/cache)、邮件/打印队列 | 程序运行产生的临时文件、下载中间文件、会话缓存 |
| 是否可安全删除 | 是(重启自动清空) | 否,/var/lib 删除会丢数据 | 是,但运行中的程序可能仍在使用 |
| FHS 定位 | 运行时变量数据 | 可变数据层次 | 临时文件 |
设备与硬件目录:dev、media与mnt:
| 目录 | 全称/含义 | 核心用途 | 谁来操作 | 典型场景 |
|---|---|---|---|---|
| /dev | device(设备) | 存放代表硬件设备的特殊文件 | 系统自动管理 | /dev/sda(硬盘)、/dev/tty(终端) |
| /media | media(介质) | 可移动介质的自动挂载点 | 系统/桌面环境自动 | U 盘插入后自动挂载到 /media/用户名/… |
| /mnt | mount(挂载) | 供管理员临时手动挂载文件系统 | 管理员手动操作 | 临时挂载网络共享、修复系统时挂载分区 |
对外目录:srv:
srv全称service,如果机器跑着 Web 服务、FTP 服务或版本控制服务,这些服务对外提供的内容(比如网页文件、FTP 共享文件)可以放在/srv下
srv是一个对外提供静态文件数据的目录
配置目录:etc:
etc的全称是et cetera,是系统演进中逐渐形成的配置文件集中地
其存放主机特定的系统配置,并且不得包含二进制可执行文件。
举例:
/etc/passwd:用户账户信息/etc/fstab:文件系统挂载配置/etc/hosts:主机名到 IP 的静态映射/etc/resolv.conf:DNS 解析配置/etc/ssh/:SSH 服务配置/etc/systemd/:systemd 服务管理配置
启动加载文件目录:boot:
/boot:是存放系统启动所需静态文件的目录,核心作用是让系统能够成功引导起来。
/boot下通常存放:
Linux 内核(如 vmlinuz-linux)
initramfs 镜像(初始内存文件系统)
引导加载程序的配置文件及相关阶段文件
可共享只读目录:usr:
/usr全称是Unix System Resource
/usr里面包含了系统绝大部分的用户级程序和数据
其子目录与/目录下的目录结构高度相同:
/usr/bin:绝大多数用户可执行程序(非系统启动必需)。/usr/sbin:非必要的系统管理程序。/usr/lib、/usr/lib32、/usr/lib64:程序运行所需的库文件。/usr/share:与架构无关的共享数据,如文档、手册页、图标。/usr/local:预留给管理员安装本地软件,系统更新不会覆盖这里。
FHS规范外还有/usr/include(存储C/C++头文件),/usr/src(存储软件源码),/usr/libexec(由其他程序调用的内部可执行文件,不直接给用户用)
内核与进程信息目录:proc:
proc全称process,是一个伪文件系统,文件不占磁盘空间,内容由内核在内存中动态生成,读取时实时反映系统当前状态。这正是“一切皆文件”哲学最典型的体现:内核把进程状态、硬件信息、可调参数统统包装成文件,用户用 cat 就能看。
其目录下的文件有以下几种情况:
- 数据目录:目录下每个正在运行的进程都有一个以 PID 命名的子目录
- 系统级文件:内核与硬件快照
/proc/cpuinfo:CPU 型号、核心、频率等信息/proc/meminfo:物理内存与 swap 使用情况(free 命令的数据来源)/proc/loadavg:系统负载(1/5/15 分钟平均值)/proc/mounts:当前挂载的文件系统/proc/partitions:磁盘分区信息/proc/interrupts:中断使用情况/proc/version:内核版本
/proc/sys/:这里的文件科协,可用于运行时调整内核参数
内核对象与设备树目录:sys:
/sys全称system(非官方),同样是一个伪文件系统。向用户空间导出内核内部的对象结构(kobject),主要是设备、驱动、总线、内核模块等。
例如:
/sys/devices/:内核设备树的真实层次结构,是所有设备在sysfs中的“根”位置/sys/dev/:按设备号(major:minor)组织的block/与char/符号链接,便于用stat得到的设备号反查sysfs/sys/module/:已加载内核模块的信息/sys/power/:电源管理相关接口
非标准目录:lost-found:
当系统意外崩溃或断电后,fsck(文件系统检查工具)会在下次启动时扫描磁盘。如果发现损坏或“无家可归”的文件碎片,就会把它们放到/lost+found里等待人工处理
用户目录文件结构介绍
TODO: 让我偷偷懒
