Linux概述

发布于:2024-10-16 ⋅ 阅读:(14) ⋅ 点赞:(0)

文章目录

作者有话说:

这是我学习Linux的记录!

一、Linux概述

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSLX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。虽然存在着许多不同的Linux版本,但它们都使用了 Linux内核。

POSLX和Unix简单解释:

  • Unix 是一种历史悠久且广泛应用的操作系统,以其模块化设计、简洁和强大的工具链为特点。
  • POSIX 是一套标准,确保不同操作系统间的接口兼容性。它不仅统一了 Unix 系统,还影响了许多非 Unix 系统的设计。

Unix 介绍:Unix 是一种强大、灵活的多用户、多任务操作系统,最早由 Ken ThompsonDennis Ritchie 于 1969 年在贝尔实验室(Bell Labs)开发。Unix 以其简洁、模块化设计和高度的可移植性著称,特别适用于服务器和网络环境。

POSIX 介绍POSIXPortable Operating System Interface,可移植操作系统接口)是一套由 IEEE 制定的标准,旨在为 Unix 和类 Unix 操作系统提供统一的 API(应用程序接口)。POSIX 标准定义了系统的行为和接口,确保不同操作系统的兼容性。

Unix 和 POSIX 的关系:

1.Unix 是起源:Unix 是一种操作系统,而 POSIX 是对 Unix 和类 Unix 系统的标准化定义,确保不同操作系统之间的兼容性。

2.POSIX 标准化 Unix:POSIX 提供了统一的操作系统接口,使得 Unix 及其衍生系统(如 Linux 和 BSD)能够在 API 层面保持一致性。

3.POSIX 影响非 Unix 系统:虽然 POSIX 是基于 Unix 的标准,但许多非 Unix 系统(如 Windows)也实现了部分 POSIX 兼容性,以便运行 Unix 风格的应用程序。

二、Linux简介

Linux 是一套免费使用和自由传播的类 Unix 操作系统,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Uuix兼容产品。

Linux内核最早由一位名叫Linus Torvalds的计算机爱好者开发。这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有 Uuix 操作系统的全部功能,是一个完全免费的操作系统。因为Linux的内核代码是全部从头写的,符合POSLX 1003.1标准,并且Unix中所有的命令Linux都有,同 Unix十分相似,所以人们称Linux为Unix的“克隆”。严格地说,Linux 只是一个操作系统的内核,不能被认为是一个操作系统。用Stallman的话说:“它只是一个内核,正确的叫法应为GNU/Linux操作系统。不同发行厂商发行的Linux 操作系统只是GNU(GNU Is Not Unix)操作系统的某个发行版。而Linux是各种发行版本的GNU操作系统的内核。’‘

三、Linux系统特点

Linux 是一种基于 Unix 的开源操作系统,具有以下显著特点:

3.1 开源和免费

  • 开源:Linux 的源代码公开,任何人都可以查看、修改和分发。这促进了全球开发者的合作,推动了系统的不断改进和创新。
  • 免费:大多数 Linux 发行版(如 Ubuntu、Debian、Fedora 等)都是免费的,用户无需支付许可费用。这使得 Linux 成为个人用户、企业和教育机构的理想选择。

3.2 跨平台兼容性和可移植性

  • 可移植性:Linux 内核是高度可移植的,它可以运行在从小型嵌入式系统到大型超级计算机的各种硬件架构上。Linux 支持的硬件平台包括 x86、ARM、PowerPC 等。
  • 跨平台:Linux 不依赖特定的硬件架构,可以在多个平台上使用,包括桌面、服务器、嵌入式设备和移动设备(如 Android 系统)。

3.3 多用户和多任务

  • 多用户:Linux 是一个多用户操作系统,允许多个用户同时使用同一台计算机,每个用户拥有自己独立的环境,互不干扰。
  • 多任务:Linux 支持多任务处理,即在同一时间内可以运行多个进程。每个进程有自己的独立空间和权限,确保任务的稳定性和安全性。

3.4 强大的安全性和稳定性

  • 权限管理:Linux 通过严格的用户权限管理,限制不同用户和进程对系统资源的访问,减少了安全漏洞的风险。
  • 稳定性:Linux 系统被广泛用于服务器环境,因其稳定可靠而闻名,许多服务器可以长时间运行而无需重启。
  • 社区维护:由于开源的特性,Linux 拥有全球的开发者和安全专家进行维护和漏洞修复,这使得它的安全性和稳定性持续得到提升。

3.5 可定制性

  • 模块化设计:Linux 内核和系统组件是模块化设计的,用户可以根据需求定制自己的 Linux 系统,选择所需的组件和服务。
  • 发行版多样性:Linux 有许多不同的发行版(如 Ubuntu、Debian、Fedora、Arch Linux 等),它们基于同一个内核,但提供了不同的用户体验和功能集,满足了从桌面用户到服务器管理员的各种需求。

3.6 支持开源软件生态系统

  • 开源软件支持:Linux 拥有广泛的开源软件支持,包括办公软件(如 LibreOffice)、开发工具(如 GCC、Python)、网络服务(如 Apache、Nginx)等。大部分应用程序都可以通过包管理器(如 APT、YUM、Pacman)方便地安装和更新。
  • 开发者友好:Linux 对程序员非常友好,提供了强大的开发环境,支持多种编程语言和工具(如 Git、Vim、Emacs),以及丰富的开发库和文档。

3.7 文件系统灵活性

  • 支持多种文件系统:Linux 支持多种文件系统,包括 EXT4、XFS、Btrfs、ZFS 等。用户可以根据需求选择最适合的文件系统,提供了灵活的数据管理能力。
  • 一切皆文件:继承自 Unix 的设计理念,Linux 中的设备、进程、网络接口等都以文件形式存在,统一的文件管理方式使得系统操作更加简洁。

3.8 网络功能强大

  • 内置网络工具:Linux 提供了许多强大的网络管理工具,如 iptablesifconfignetstat 等,适用于网络配置、监控和安全管理。
  • 服务器领域的广泛应用:Linux 被广泛用于服务器领域,尤其是 Web 服务器、数据库服务器、邮件服务器等。很多互联网企业(如 Google、Facebook)都使用 Linux 服务器作为其基础设施。

3.9 社区支持与文档丰富

  • 全球社区支持:Linux 拥有一个庞大的开源社区,用户可以通过社区获取支持、帮助和贡献代码。社区成员会定期发布安全更新、修复漏洞并开发新功能。
  • 丰富的文档:由于 Linux 是开源的,文档非常丰富,涵盖了从入门到高级使用的各类资源,帮助用户解决各种问题。

四、Linux发展

Linux 是由芬兰计算机科学家 Linus Torvalds 于 1991 年首次开发的一个开源操作系统内核。随着全球开发者和社区的持续贡献和改进,Linux 已经从一个学生项目发展成为全球最广泛使用的操作系统之一,尤其是在服务器和嵌入式系统领域。

4.1 Linux 的起源

  • 1991 年Linus Torvalds 在赫尔辛基大学学习时,出于对 Unix 系统的兴趣和个人需要,他开始开发一个兼容 Unix 的自由操作系统内核。他的初衷是为了在个人计算机上使用一个类似 Unix 的操作系统,但又不必支付昂贵的许可证费用。
  • 1991 年 9 月,Torvalds 在一个著名的 Usenet 新闻组(comp.os.minix)中发布了 Linux 内核的第一个版本 (0.02)。他邀请全球开发者一起参与项目,并宣布内核代码是完全开放和免费的。

4.2 Linux 与 GNU 项目的结合

  • GNU 项目Richard Stallman 于 1983 年发起,目标是创建一个自由的、类 Unix 操作系统,但 GNU 项目在此时尚未完成内核的开发。
  • Linux 内核GNU 软件 的结合,提供了一个完整的开源操作系统。GNU 项目提供了众多系统工具(如编译器、文本编辑器、Shell 等),而 Linux 作为内核充当系统的核心,管理硬件和软件资源。

4.3 早期发展:1990 年代

  • 1992 年,Linux 内核发布了 0.12 版本,并使用了 GNU General Public License (GPL) 授权,使其可以自由修改、发布和分发。
  • 1993 年,Linux 社区开始蓬勃发展,越来越多的开发者加入项目,提供了对更多硬件平台的支持,并丰富了系统功能。同年,首批 Linux 发行版 诞生,包括 SlackwareDebian,这些发行版使得 Linux 更加易于安装和使用。
  • 1994 年Linux 1.0 版本 正式发布,标志着 Linux 系统进入了更加成熟和稳定的阶段。此时的 Linux 内核已经开始被用作服务器、科学计算等领域。

4.4 企业的采用:2000 年代初期

  • 2000 年代,随着互联网的快速发展,Linux 成为了服务器操作系统的首选之一。尤其是 Apache Web 服务器和 Linux 的组合成为当时主流的互联网基础架构,推动了 Linux 在 Web 服务器市场的普及。
  • Red HatSUSE 等公司开始为企业用户提供商业支持的 Linux 发行版。企业版 Linux 通常附带技术支持、文档和维护更新,极大推动了企业用户的采用。
  • 2003 年,Linux 内核发展到 2.6 版本,支持了更多的硬件设备,并引入了多项性能改进。此时,Linux 的应用范围扩展到了桌面操作系统、超级计算机以及嵌入式设备。

4.5 Linux 在服务器和云计算领域的崛起

  • 2000 年代中期到后期,随着互联网和云计算的普及,Linux 在服务器领域的统治地位愈加明显。许多大型企业(如 GoogleFacebookAmazon 等)在其基础设施中大量使用 Linux 服务器。
  • 2006 年,亚马逊推出了 Amazon Web Services (AWS),它基于 Linux 提供云计算服务,使得 Linux 成为云计算领域的关键组成部分。
  • 容器技术(如 Docker)的出现,使得 Linux 在 DevOps 和应用程序开发环境中占据了核心位置。Linux 提供了灵活的容器化解决方案,促进了应用的快速部署和更新。

4.6 Linux 在桌面和移动领域的应用

  • 尽管 Linux 在服务器领域取得了巨大成功,但在桌面操作系统领域的市场份额相对较小。然而,随着 Ubuntu 和其他用户友好型发行版的出现,Linux 桌面系统的易用性得到了极大提升,吸引了许多开发者和爱好者的关注。
  • 2008 年Google 发布了基于 Linux 内核的 Android 操作系统,这是移动设备操作系统的一次革命性变革。Android 迅速成为全球最流行的移动操作系统,进一步扩大了 Linux 的影响力。

4.7 社区与商业的合作

  • Linux 是一个由全球数百万开发者和爱好者维护和贡献的开源项目,许多大型公司(如 IBMIntelOracleMicrosoft)也积极参与 Linux 的开发。
  • Linux 基金会 于 2000 年代成立,成为协调 Linux 及相关开源项目开发的重要组织。该基金会促进了企业与社区之间的合作,推动了 Linux 的标准化和商业应用。

4.8 Linux 的现代应用

  • 云计算:Linux 是现代云计算基础设施的核心操作系统,包括大多数云平台(如 AWS、Microsoft Azure 和 Google Cloud Platform)都基于 Linux 构建。
  • 容器与虚拟化:Linux 支持 Docker、Kubernetes 等容器技术,已经成为 DevOps 和现代软件开发生命周期中不可或缺的一部分。
  • 嵌入式系统:从物联网设备到路由器,许多嵌入式系统都运行 Linux,得益于其灵活性和轻量化特性。
  • 超级计算机:全球超过 90% 的超级计算机运行 Linux,它在高性能计算领域具有极高的稳定性和扩展性。

五、Linux 内核版本介绍

Linux 内核 是 Linux 操作系统的核心组件,它负责硬件管理、进程调度、内存管理、文件系统和网络通信等关键功能。Linux 内核由 Linus Torvalds 和全球开发者社区共同维护,不断演进与更新。

Linux 内核的版本号由三个数字组成,通常采用 X.Y.Z 的形式,其中每个数字代表不同的含义:

  • X:主版本号(Major Version)
  • Y:次版本号(Minor Version)
  • Z:修订版本号(Patch Version)

每次主版本号(X)的更新通常伴随着内核架构的重大改变,而次版本号和修订版本号通常用于引入新功能和修复错误。


5.1 早期版本(1.x 和 2.x)

Linux 1.x 系列
  • 1994 年 3 月 14 日Linux 1.0 正式发布,这是 Linux 内核的首个稳定版本。它支持了基础的多任务、多用户功能,以及 TCP/IP 网络协议栈。
  • Linux 1.2 是 1.x 系列的最后一个版本,增加了对更多硬件设备的支持,并逐渐获得了一些 Unix 用户的关注。
Linux 2.x 系列
  • Linux 2.01996 年 6 月 发布,它引入了多处理器(SMP)支持,显著提高了性能,尤其是对多核和多处理器系统的支持。此外,2.0 版本还改进了网络性能,并引入了初步的防火墙功能。
  • Linux 2.2(1999 年发布)进一步扩展了对不同硬件平台(如 Alpha、SPARC 等)的支持,强化了网络功能和大规模内存管理。
  • Linux 2.4(2001 年发布)增加了对 USB、IPv6、网桥、Netfilter/iptables(现代防火墙技术的基础)等重要功能的支持,极大提升了网络应用和嵌入式系统的能力。
  • Linux 2.6(2003 年发布)是一个重要的里程碑,带来了对大量硬件设备、文件系统(如 XFS 和 EXT4)和内存管理的改进。它还引入了内核线程、可移植性增强、多任务处理和更高的稳定性。

5.2 现代版本(3.x 及以后)

Linux 3.x 系列
  • Linux 3.02011 年 7 月 发布,这一版本号的改变并没有伴随重大功能变化,主要是为了简化版本编号。3.x 系列带来了对 btrfs 文件系统的改进、虚拟化支持的增强,以及提高了对多核处理器的支持。
  • Linux 3.10 是一款广泛使用的长周期支持版本,得到企业和社区的广泛采用。它带来了更强的虚拟化支持、改进的电源管理功能和文件系统优化。
Linux 4.x 系列
  • Linux 4.02015 年 发布,它引入了 Live Kernel Patching(内核热补丁)功能,使得用户能够在无需重启系统的情况下修补内核漏洞。这一特性在高可用性系统中尤为重要。
  • Linux 4.4 是一个长期支持的版本,它引入了众多重要改进,包括对 AMD GPU 支持、增强的虚拟化功能以及文件系统的进一步优化。
  • Linux 4.92016 年 发布,提供了更加成熟的文件系统支持、大规模优化的网络性能,以及对多种新硬件设备的支持。这个版本被认为是当时的一个成熟里程碑。
Linux 5.x 系列
  • Linux 5.02019 年 3 月 发布,虽然版本号的改变较大,但并未伴随重大变化。它包括对能量感知调度(Energy-aware scheduling)功能的支持、AMD FreeSync 支持、对文件系统和内存管理的优化。
  • Linux 5.4 是一个 LTS(长期支持)版本,发布于 2019 年,引入了 Lockdown 模式,增强了内核与用户空间的隔离,以提升安全性。还增加了对 exFAT 文件系统的原生支持。
  • Linux 5.102020 年 发布,提供了许多新特性,包括更好的文件系统支持、增强的 BPF 功能和内存性能优化。它也是一个 LTS 版本,得到长时间的支持。
Linux 6.x 系列
  • Linux 6.02022 年 10 月 发布,它引入了新的网络驱动、改进的内存管理、新的硬件支持(尤其是 RISC-V 和 ARM 设备),以及各种性能优化。
  • Linux 6.1 是一个 LTS 版本,它进一步增强了 BPF(Berkeley Packet Filter) 的功能,带来了改进的虚拟化支持,特别是在云计算环境下。
  • Linux 6.2 和后续版本继续引入新硬件支持,并为文件系统、能效和安全性进行了优化,特别是在高性能计算和嵌入式系统中的应用。

5.3 内核开发与发布周期

Linux 内核的开发由 Linus Torvalds 和来自全球的开发者社区进行协调。Linux 内核的更新采用快速发布模型,每隔 6 到 10 周 发布一个新版本。这种快速迭代的开发模式,使得 Linux 内核可以及时集成新特性、修复漏洞和优化性能。

  • 长期支持版本(LTS):除了常规的内核发布外,某些版本被选为 LTS 版本(长期支持),通常每年发布一次,并且会得到 2 到 6 年的维护,适合企业级和关键任务环境的部署。这些版本在长期使用中确保了稳定性和安全性。

六、Linux 的组成

Linux 系统由多个关键组件构成,包括 内核Shell文件系统系统库系统工具图形用户界面应用程序。这些组件协同工作,提供了强大、稳定、可扩展的操作系统架构。Linux 的模块化设计允许用户根据需求灵活选择不同的工具、库和应用程序,从而使其在服务器、桌面、嵌入式设备等领域广泛应用。

Linux 的组成部分可以分为以下几个主要模块:


6.1 内核(Kernel)

内核 是 Linux 系统的核心,负责管理硬件资源、提供系统调用接口、调度进程、管理内存、处理文件系统以及设备的输入输出操作等。

内核的主要功能包括:
  • 进程管理:内核负责创建、调度和终止进程,管理进程间的通信和资源分配。
  • 内存管理:内核控制系统的物理内存和虚拟内存,确保不同进程之间的隔离,并优化内存使用。
  • 设备驱动:内核通过设备驱动程序与硬件交互,支持各种硬件设备(如硬盘、显示器、网络设备等)。
  • 文件系统管理:内核支持多种文件系统格式(如 EXT4、XFS、Btrfs 等),并管理文件读写操作。
  • 网络功能:内核通过网络堆栈(TCP/IP 协议等)处理网络连接、数据包传输等操作。
  • 安全和权限管理:内核控制用户的访问权限,保护系统免受恶意程序的攻击。

6.2 Shell(命令行解释器)

Shell 是用户与 Linux 系统之间的接口,用户通过 Shell 与系统进行交互,输入命令并获取输出结果。Shell 作为命令行解释器,负责将用户输入的命令传递给内核执行。

常见的 Shell 包括:
  • Bash(Bourne Again Shell):Linux 系统中最常见的 Shell,功能丰富,支持脚本编写。
  • Zsh:与 Bash 类似,但提供更多扩展功能和定制选项。
  • Dash:一个轻量级的 Shell,主要用于提高脚本的执行速度。
  • Fish(Friendly Interactive Shell):一个设计简洁且用户友好的交互式 Shell。

通过 Shell,用户可以执行文件操作、系统管理任务、运行应用程序、编写和运行 Shell 脚本等。


6.3 文件系统(File System)(会单独出一个小结)

文件系统 是 Linux 管理和存储文件的结构。它决定了如何组织、存储和检索文件数据。Linux 支持多种文件系统格式。

常见的文件系统类型:
  • EXT 系列(如 EXT4):Linux 系统默认的文件系统,稳定且性能优异。
  • XFS:高性能文件系统,特别适合处理大文件和并发访问场景。
  • Btrfs:一个现代的文件系统,支持快照、压缩和错误检测,适合复杂存储需求。
  • FAT/NTFS:常见于 Windows 系统,Linux 也可以通过驱动程序访问这些文件系统。
  • NFS(Network File System):允许通过网络共享文件,常用于局域网中的文件共享。

文件系统为用户提供了统一的接口,使得设备、进程、网络等都可以通过文件的方式进行操作。


6.4 系统库(System Libraries)

系统库 是 Linux 系统中用于执行应用程序和系统程序的共享函数库。它们提供了通用的功能,如 I/O 操作、字符串处理、内存管理等,供内核和用户程序调用。

常见的系统库:
  • glibc(GNU C Library):最常见的 C 标准库,Linux 系统中几乎所有程序都依赖它。
  • libc:为应用程序提供基本的系统调用接口,如文件操作、进程管理等。
  • libpthread:提供线程支持的库,支持多线程编程。

这些库通过封装系统调用,将底层硬件操作与用户程序隔离,使程序员不必直接处理复杂的系统级操作。


6.5 系统工具和实用程序(System Utilities)

系统工具 是管理、配置和诊断 Linux 系统的程序。它们提供了用户和系统管理员常用的基本命令和工具,执行系统维护、监控、管理任务。

常见的系统工具:
  • 文件操作工具:如 cp(复制)、mv(移动)、rm(删除)、ls(列出文件)。
  • 进程管理工具:如 ps(显示进程)、top(监视系统资源)、kill(终止进程)。
  • 磁盘管理工具:如 df(显示磁盘使用情况)、du(查看目录或文件的大小)、mount(挂载文件系统)。
  • 网络管理工具:如 ifconfigpingnetstatssh(远程登录)、curl(请求网络资源)。
  • 包管理工具:如 APT(Debian/Ubuntu 系列)、YUM/DNF(Red Hat 系列),用于安装、更新、删除软件包。

6.6 图形化用户界面(GUI)

图形用户界面(GUI) 为用户提供了更直观的操作方式。尽管 Linux 最早主要是命令行操作,但现代 Linux 系统支持丰富的图形化桌面环境。

常见的图形化桌面环境:
  • GNOME:默认的桌面环境之一,界面简洁,广泛应用于 Ubuntu 等发行版。
  • KDE Plasma:功能丰富、可定制性强,适合高级用户。
  • Xfce:轻量级桌面环境,适合硬件资源有限的设备。
  • LXDE:另一个轻量级桌面环境,非常节省系统资源。

图形用户界面通过 X Window 系统Wayland 提供基础支持,允许不同桌面环境和窗口管理器在 Linux 上运行。


6.7 应用程序(Applications)

应用程序 是用户在 Linux 系统上执行的各种软件工具和程序。Linux 提供了丰富的开源应用程序,涵盖了从生产力工具到开发环境的各类需求。

常见的应用程序:
  • Web 浏览器:如 Firefox、Chromium。
  • 办公套件:如 LibreOffice,用于文档处理、电子表格和演示文稿制作。
  • 媒体播放器:如 VLC,用于播放各种音视频文件。
  • 开发工具:如 Git(版本控制)、GCC(编译器)、VS Code(代码编辑器)。
  • 终端工具:如 tmux、htop,用于增强命令行操作。

七、Linux 文件系统简介

Linux 文件系统 是一种层次结构的文件管理系统,它决定了如何在磁盘上组织、存储和访问文件和目录。Linux 文件系统采用了 树状目录结构,其中所有内容都可以追溯到根目录 /,设备、文件、目录等都被抽象为文件进行管理。


7.1 Linux 文件系统的特点

7.1.1 一切皆文件
  • 在 Linux 中,一切皆文件,包括普通文件、目录、设备(如硬盘、键盘、打印机等)、套接字、管道和链接等。
  • 这种设计使得操作系统的处理更加统一,无论是硬件还是软件,最终都通过文件系统进行访问和管理。
7.1.2 分层目录结构
  • Linux 采用了分层的 树状结构,根目录 / 是文件系统的顶层。所有其他目录和文件都挂载在根目录下,这种结构使得目录和文件管理更加有序。
  • 每个目录可以包含文件或子目录,形成一个分层的文件组织系统。
7.1.3 支持多种文件系统
  • Linux 支持多种文件系统格式,如 EXT 系列(EXT2、EXT3、EXT4)XFSBtrfsReiserFSZFS,以及其他跨平台文件系统如 FATNTFS
  • 每种文件系统都有自己的优势,用户可以根据需求选择适合的文件系统格式。

7.2 Linux 常见的文件系统类型

7.2.1 EXT 系列文件系统
  • EXT2(Second Extended File System)
    • EXT2 是 Linux 最早的文件系统之一,虽然不支持日志功能,但结构简单,适用于嵌入式设备。
  • EXT3(Third Extended File System)
    • EXT3 基于 EXT2,增加了日志功能,减少了文件系统在异常关闭时的数据丢失风险。
  • EXT4(Fourth Extended File System)
    • EXT4 是目前最常用的 Linux 文件系统之一,支持更大的文件和分区、文件碎片整理和延迟分配等功能,性能和稳定性优异。
7.2.2 XFS
  • XFS 是一种高性能的文件系统,特别适合处理大文件和并发操作。它提供了动态分配 iNode、快照和数据完整性等特性,常用于服务器和数据存储场景。
7.2.3 Btrfs
  • Btrfs 是一个现代化的文件系统,旨在提供高级管理功能。它支持快照、压缩、多设备卷管理和自我修复功能,适合复杂存储需求。
7.2.4 FAT/NTFS
  • FATNTFS 是 Windows 系统的文件系统格式,Linux 通过 FUSE 文件系统和内核模块可以读写这些格式。FAT 主要用于 U 盘等便携设备,而 NTFS 在现代 Windows 系统中广泛使用。
7.2.5 ZFS
  • ZFS 由 Sun Microsystems 开发,具备极高的可靠性和可扩展性。它集成了卷管理、文件系统和数据完整性检查,适合存储大量数据的企业环境。

7.3 Linux 文件系统的目录结构

Linux 文件系统采用了一种标准化的目录结构,称为 Filesystem Hierarchy Standard(FHS),规定了各个系统目录的用途和内容。常见的目录包括:

7.3.1 根目录 /
  • 根目录 / 是 Linux 文件系统的最高层级,所有文件和目录都位于其下。
7.3.2 /bin/sbin
  • /bin:存放基本的用户命令,如 lscpmv 等,普通用户和管理员都可以使用。
  • /sbin:存放系统管理员使用的命令,如 fdiskifconfig,一般只有超级用户(root)有权限使用。
7.3.3 /home
  • /home 目录用于存放各个普通用户的个人文件和目录。每个用户都有一个子目录,如 /home/username,该目录下存放用户的个人配置文件、文档、下载等。
7.3.4 /root
  • /root 是超级用户(root)的主目录,存放系统管理员的配置文件和个人数据。
7.3.5 /etc
  • /etc 目录存放系统的配置文件和脚本,如网络配置文件、用户密码文件等。它是系统启动时依赖的重要目录之一。
7.3.6 /var
  • /var 存放变化的数据文件,如日志文件、缓存数据、邮件队列等。常见的目录有 /var/log(日志文件)和 /var/www(Web 服务器数据文件)。
7.3.7 /usr
  • /usr 目录存放用户使用的程序和文件,通常包含了应用程序、库、文档等。
    • /usr/bin:用户可执行的命令。
    • /usr/lib:共享库文件。
    • /usr/share:共享的资源文件,如文档、图标等。
7.3.8 /dev
  • /dev 目录下存放的是设备文件。Linux 中的硬件设备(如硬盘、USB、网络接口等)通过 /dev 文件系统映射为文件,用户可以通过这些文件与硬件交互。
7.3.9 /proc/sys
  • /proc:一个虚拟文件系统,存放系统内核信息、进程信息等。通过查看 /proc,可以获取到当前系统的内存使用、CPU 信息等。
  • /sys:类似于 /proc,存放系统硬件信息,提供与内核和设备的交互接口。
7.3.10 /tmp
  • /tmp 用于存放临时文件,系统和用户程序可以在此创建临时文件。该目录下的文件通常会在系统重启后自动删除。
7.3.11 /mnt/media
  • /mnt:用于临时挂载文件系统,通常在安装其他硬盘或网络文件系统时使用。
  • /media:用于自动挂载的设备,如 USB 设备、CD-ROM 等。

7.4 挂载(Mount)和卸载(Unmount)

在 Linux 中,文件系统通过挂载到目录树的方式进行访问。设备或分区必须通过 挂载 操作关联到一个特定的目录,才能访问其上的文件。

7.4.1 挂载命令
  • mount 命令用于将设备或文件系统挂载到某个目录。例如,挂载一个 U 盘:
    sudo mount /dev/sdb1 /mnt/usb
    
7.4.2 卸载命令
  • umount 命令用于卸载已经挂载的设备或文件系统,释放相关资源:

    sudo umount /mnt/usb
    
7.4.3 挂载点
  • 挂载点是一个空目录,用于挂载文件系统。常见的挂载点有 /mnt/media,也可以根据需要自定义挂载点。

7.5 权限管理

Linux 文件系统中的文件和目录都有严格的 权限控制,每个文件或目录的访问权限由 所有者用户组其他用户 三级权限组成。

7.5.1 权限类型
  • 读(r):允许查看文件内容或列出目录内容。
  • 写(w):允许修改文件内容或在目录中创建、删除文件。
  • 执行(x):允许执行文件(如果文件是脚本或程序)或进入目录。
7.5.2 权限命令
  • ls -l:查看文件或目录的权限。

  • chmod:修改文件或目录的权限。

    chmod 755 filename
    
  • chown:更改文件或目录的所有者。

    sudo chown user:group filename
    

7.6 树状图直观展示

/
|-- bin
|-- sbin
|-- home
| |-- user1
| |-- user2
|-- root
|-- etc
|-- var
| |-- log
| |-- www
|-- usr
| |-- bin
| |-- lib
| |-- share
|-- dev
|-- proc
|-- sys
|-- tmp
|-- mnt
|-- media