当前位置: 首页 > news >正文

Ubuntu 操作系统深度解析:从入门到精通(2025 最新版)

Ubuntu 操作系统深度解析:从入门到精通(2025 最新版)

一、Ubuntu 的前世今生与未来发展趋势

1.1 起源与发展历程

Ubuntu 是一个基于 Linux 内核的开源操作系统,由南非企业家马克・沙特尔沃思(Mark Shuttleworth)创立的 Canonical 公司开发和维护。“Ubuntu” 一词源自非洲南部的祖鲁语,意为 “人性” 或 “我的存在因大家的存在”,这一名称完美诠释了 Ubuntu 的开源社区精神 —— 协作、共享与包容。

2004 年 10 月 20 日,Ubuntu 首个版本 4.10"Warty Warthog" 正式发布,标志着这一愿景的初步实现。Ubuntu 的诞生源于沙特尔沃思对 Debian 社区的热爱与不满。他曾在 1995 年参与 Debian 开发,但认为其过于保守,难以适配商业硬件与大众用户需求。因此,Ubuntu 以 Debian 的 “不稳定分支”(Sid)为基础,优化了软件更新频率与安装体验,目标是打造 “普通人也能轻松使用的 Linux”。

Ubuntu 的版本号遵循独特的命名规则:前两位数字表示年份,后两位表示月份,中间以小数点分隔。例如,4.10 表示 2004 年 10 月发布的版本。每个版本都有一个由 “形容词 + 动物名” 组成的代号,且首字母按英文顺序排列(如 Dapper Drake、Focal Fossa),既有趣又便于记忆。

Ubuntu 的发展历程可分为几个关键阶段:

初创期(2004-2006):这一时期,Ubuntu 初步建立了版本发布机制和社区基础。2006 年 6 月,Ubuntu 6.06 LTS"Dapper Drake" 成为首个长期支持版本,LTS 版本专为企业用户设计,提供 5 年的安全更新和技术支持,而普通版本(非 LTS)仅维护 9 个月。这一策略奠定了 Ubuntu 在服务器市场的根基。

桌面探索期(2007-2012):Ubuntu 尝试在桌面市场取得突破。2011 年,Ubuntu 11.04 推出 Unity 桌面环境,试图统一 PC、手机和平板的交互体验。然而,Unity 因资源占用高、用户习惯冲突引发争议。

转型期(2013-2017):这一阶段,Canonical 尝试了多个新领域,包括 Ubuntu 手机项目,但因生态不足于 2017 年宣告失败。同年,沙特尔沃思宣布放弃 Unity,回归 GNOME,并专注服务器与云计算领域。

多元化发展期(2018 至今):Ubuntu 在服务器市场迎来爆发。依托 AWS、Azure 等云平台,其占据超 50% 的公有云实例份额,成为企业级应用的首选。2018 年,Ubuntu 18.04 LTS"Bionic Beaver" 发布,支持期长达 10 年(通过付费扩展),进一步巩固了其在稳定性和兼容性上的优势。

截至 2025 年,Ubuntu 已发布了超过 30 个版本,成为全球最受欢迎的 Linux 发行版之一。

1.2 版本发布策略与支持周期

Ubuntu 采用独特的版本发布策略,确保用户既能获取最新功能,又能使用稳定版本:

定期发布:Ubuntu 每 6 个月发布一个新版本,这样可以保证用户使用的是相对最新的软件。

长期支持(LTS)版本:每两年(即每 4 个版本)会发布一个长期支持版本,提供更长时间的支持和更新。LTS 版本桌面版有 3 年的支持期,而 LTS 服务器版则有 5 年的支持期。

扩展安全维护(ESM):对于已过标准支持期的 LTS 版本,用户可以通过付费订阅获得额外的安全更新支持。目前,Ubuntu Main 组件的 ESM 支持可延长 5 年,Ubuntu Universe 组件的 ESM 支持可延长 10 年。

下表列出了截至 2025 年 8 月的主要 Ubuntu 版本及其支持状态:

版本代号发布日期标准支持结束Ubuntu Pro 支持结束遗产支持结束
25.04Plucky Puffin2025 年 4 月2026 年 1 月--
24.10Oracular Oriole2024 年 10 月2025 年 7 月--
24.04 LTSNoble Numbat2024 年 4 月2029 年 4 月2034 年 4 月2036 年 4 月
22.04 LTSJammy Jellyfish2022 年 4 月2027 年 4 月2032 年 4 月2034 年 4 月
20.04 LTSFocal Fossa2020 年 4 月2025 年 4 月2030 年 4 月2032 年 4 月
18.04 LTSBionic Beaver2018 年 4 月2023 年 4 月2028 年 4 月2030 年 4 月
16.04 LTSXenial Xerus2016 年 4 月2021 年 4 月2026 年 4 月2028 年 4 月
14.04 LTSTrusty Tahr2014 年 4 月2019 年 4 月2024 年 4 月2026 年 4 月

数据来源:Ubuntu 官方网站

值得注意的是,随着 2025 年的到来,Ubuntu 20.04 LTS 的标准支持已于 2025 年 4 月结束,用户需要迁移到更新的 LTS 版本或购买 Ubuntu Pro 订阅以继续获得支持。

1.3 Ubuntu 与其他操作系统的对比分析

在当今的操作系统市场中,Ubuntu 与 Windows、macOS 等主流操作系统展开了激烈竞争。以下从多个维度对它们进行对比分析:

1.3.1 市场份额与用户基础

根据 2025 年 6 月的全球统计数据,操作系统市场份额分布如下:

  • Android(基于 Linux 内核):47.77%

  • Windows:24.98%

  • iOS:16.33%

  • OS X:3.53%

  • macOS:1.95%

  • 其他操作系统:5.44%

数据来源:Statcounter 全球统计

在桌面操作系统领域,情况略有不同。2025 年 1 月,微软的 Windows 在美国计算机操作系统市场占据主导地位,市场份额约为 63%。苹果的 macOS 市场份额超过 21%,较前一年有所下降。Linux 在美国桌面市场的份额首次突破 5% 大关,达到 5.03%,标志着开源计算发展历程中的一个重要里程碑。

在中国市场,2025 年 6 月的操作系统份额数据如下:

  • Android:49.92%

  • Windows:26.52%

  • iOS:16.31%

  • OS X:2.85%

  • macOS:0.5%

  • 其他:3.90%

数据来源:Statcounter 中国统计

在开发者社区中,Ubuntu 拥有极高的受欢迎度。根据 2020 年 HackerEarth 开发者调查,66% 的开发者使用 Ubuntu,高于 61% 使用 MS Windows 和 57% 使用 macOS 的比例。在企业服务器领域,Ubuntu 同样表现出色,占据 35.6% 的市场份额,领先于 Debian(21.4%)和 CentOS(19.5%)。

1.3.2 性能与资源利用

不同操作系统在性能和资源利用方面各有特点:

启动速度:在启动速度方面,Linux 系统通常比 Windows 更快。在实际测试中,Linux 系统从按下电源按钮到登录界面出现的时间通常比 Windows 短,这为用户提供了更快的启动体验。

资源占用

  • Ubuntu 更轻量:基于 Linux 内核,系统开销低,适合云电脑的虚拟化环境,能更高效利用计算资源。

  • Windows 更吃配置:尤其是图形界面(如 Win11)和后台服务较多,可能占用更多 CPU / 内存,影响云电脑流畅度。

在资源占用对比测试中,Ubuntu Server 20 与 Windows Server 2019 的图形界面占用内存相当,而 Windows Server 2025(基于 Windows 11 24H2 版本)的内存使用接近 2GB,比 Ubuntu Server 更高。

性能测试:在 2019 款 MacBook Pro 上进行的基准测试显示,Ubuntu 在性能方面表现出色。在 Geekbench 6 测试中,Ubuntu 单核得分为 1,629 分,比 macOS 高 108 分,比 Windows 高 99 分;多核得分 7,252 分,比 macOS 高 432 分,比 Windows 高 968 分。

跨平台基准测试通常表明,Linux 和 Windows 在相同硬件上的常规计算任务性能相当,而苹果的 M 系列 Mac 通常在每瓦性能方面领先。

1.3.3 硬件兼容性与要求

不同操作系统对硬件的要求和兼容性也存在差异:

硬件要求

  • Windows 11 提高了最低硬件要求,要求 64 位 CPU,至少 2 核,4GB RAM,64GB 存储空间,更重要的是需要可信平台模块(TPM 2.0)芯片和安全启动支持。

  • macOS Sonoma 针对苹果硬件进行了优化,特别是最新的苹果硅芯片。即使在支持的 Intel Mac 上(通常为 2017-2019 年型号及以后),Sonoma 的性能对于日常任务也很流畅。

  • Ubuntu 24.04 的官方要求(2GHz 双核 CPU,4GB RAM 等)与 Windows 相似,但没有像 TPM 这样的专有检查。Ubuntu 可以在各种硬件上运行,比 Windows 11 更能适应老旧机器。

兼容性

  • Windows 支持最广泛的硬件和软件,但对老旧设备的支持逐渐减弱。

  • macOS 仅官方支持苹果硬件,但通过非官方方式可在其他硬件上运行(称为 “黑苹果”)。

  • Ubuntu 支持范围广泛的硬件,包括 x86、ARM、RISC-V 等主流架构,从树莓派到数据中心服务器均可运行。Ubuntu 与世界领先的硬件制造商合作,提供大量经过认证的笔记本电脑、台式机和工作站。

1.3.4 安全性与隐私保护

安全性是操作系统选择的重要考量因素:

安全机制

  • Ubuntu 采用 Sudo 工具,当你运行一个需要 root 特权的应用程序时,sudo 会提示你输入你的普通用户的密码,这样可以确保程序不会损坏你的系统。

  • Ubuntu 的 Linux 内核具有内置的安全功能,如 AppArmor 强制访问控制系统,可限制程序的权限。

  • Ubuntu 定期发布安全更新,确保系统及时修复漏洞。

隐私保护

  • Ubuntu 注重系统的安全性和可用性,其设计为在标准安装完成后即可以让使用者投入使用的操作系统。

  • 与 Windows 相比,Linux 架构天然隔离性强,病毒攻击风险低。

企业级安全

  • Ubuntu Pro 提供扩展的安全补丁和合规工具,以及对第三方身份管理工具的支持。

  • Canonical 正在进行一项重大变革,从即将推出的 Ubuntu 25.10 开始,将用基于 Rust 的 uutils 替换 GNU coreutils,这将提供更好的内存安全保障。

1.3.5 成本与许可模式

不同操作系统的成本结构和许可模式差异显著:

获取成本

  • Ubuntu 有始终免费下载、使用和分享。我们相信开源软件的力量;没有全球自愿开发者社区,Ubuntu 就不可能存在。

  • Windows 和 macOS 需要购买许可证,尽管价格因版本和渠道而异。

商业模式

  • Canonical 通过 Ubuntu Pro 订阅服务向企业客户提供长期支持(LTS),包括安全更新、实时内核补丁和技术支持。2023 年,订阅服务贡献了约 80% 的收入(约 1.97 亿美元),成为核心收入来源。

  • LTS 支持扩展:付费用户可享受长达 12 年的支持周期(普通用户为 5 年),这一策略吸引了大量企业客户。

  • Canonical 还通过向硬件制造商和软件供应商授权 Ubuntu 获取收益,并与 AWS、Azure 等云服务商合作,提供预装优化的 Ubuntu 镜像,并从中分成。

1.3.6 开发友好性对比

对于开发者来说,操作系统的开发友好性至关重要:

开发环境

  • Ubuntu 提供了一个强大、灵活且稳定的平台,非常适合深度学习的开发、测试和部署,这也是为什么很多深度学习从业者和研究者倾向于选择 Ubuntu 作为他们的操作系统。

  • Ubuntu 默认集成 GCC、Python、Java 等主流开发工具链,且通过 APT 包管理器可快速安装 C/C++、Go、Rust 等语言环境。

跨平台开发

  • Ubuntu 与企业环境无缝集成,Ubuntu Pro 提供扩展的安全补丁和合规工具,以及对第三方身份管理工具的支持。

  • Windows Subsystem for Linux (WSL) 允许在 Windows 上使用完整的 Ubuntu 终端环境,简化 Web 应用程序开发,利用尖端 AI/ML 工具,开发跨平台应用程序,并管理 IT 基础设施而无需离开 Windows。

容器与云支持

  • Docker 在 Ubuntu 上的集成非常出色,提供了完整的容器化解决方案。

  • Ubuntu Server 是 OpenStack 项目的参考操作系统,也是 AWS、Azure 和 Google Cloud 上非常受欢迎的客户操作系统。

  • 对于云开发,Amazon WorkSpaces 提供了优化的 Ubuntu 桌面环境,使开发者能够快速构建、测试和部署代码。

1.4 未来发展趋势与技术路线图

Ubuntu 的未来发展将继续围绕用户需求和技术趋势展开,以下是几个关键方向:

1.4.1 Rust 语言应用扩展

Canonical 正积极推动 Rust 语言在 Ubuntu 中的应用:

核心工具链 Rust 化:从即将推出的 Ubuntu 25.10 开始,Canonical 计划用基于 Rust 的 uutils 替换 GNU coreutils。这一变化旨在提高系统的内存安全性和可靠性,减少缓冲区溢出等传统安全漏洞。

Rust 内核支持:Ubuntu 25.10 将搭载未发布的 Linux 6.17 内核,该内核引入了对 Rust 语言的支持,改进了异构计算性能(如 GPU/TPU 调度)。

内存安全提升:用 Rust 重写系统组件是 Ubuntu 未来发展的重要方向。继成功推出基于 Rust 的内存安全 sudo 之后,Canonical 正在推进更多系统工具的 Rust 化改造。

1.4.2 时间同步安全革新

Ubuntu 25.10(代号 “Questing Quokka”,2025 年 10 月发布)将默认采用 Chrony 作为 NTP 实现,并启用网络时间安全(NTS)协议:

NTS 加密认证:通过 TLS/DTLS 加密时间请求,防止中间人篡改时间戳,确保系统时间的安全性和准确性。

高精度同步:支持微秒级时间校准,满足金融交易、分布式系统等场景需求。

全面取代传统 NTP:Chrony 将成为默认时间同步方案,提升企业级系统可靠性。

1.4.3 AI 与机器学习支持增强

Ubuntu 正积极拥抱 AI 和机器学习领域的发展:

AI/ML 工具链整合:Ubuntu 25.10 将预装 TensorFlow、PyTorch 等框架,优化 CUDA 支持,加速深度学习开发。

硬件加速支持:Ubuntu 24.10 版本已开始加强对 AI 加速器和新芯片组的支持,为 AI 工作负载提供更好的硬件兼容性。

开发环境优化:Ubuntu 提供了一个强大、灵活且稳定的平台,非常适合深度学习的开发、测试和部署。它提供了环境配置的便利性、软件包管理的便捷性,以及对高性能计算的支持。

1.4.4 核心系统组件升级

Ubuntu 的核心系统组件将持续升级,以提供更好的性能和功能:

Linux 内核升级:Ubuntu 每 6 个月更新一次 Linux 内核(如 Ubuntu 25.10 将搭载 Linux 6.17 内核),确保硬件兼容性和性能优化。

uutils 替换 coreutils:Ubuntu 计划在 25.10 版本中默认使用 uutils coreutils,这是一个用 Rust 编写的 GNU coreutils 替代品,具有更好的内存安全性和跨平台兼容性。

Snap 性能优化:Ubuntu 24.10 版本继续优化 Snap 软件包管理系统的性能和启动速度。

1.4.5 版本发布计划与长期战略

根据官方规划,Ubuntu 的未来版本发布计划如下:

Ubuntu 25.10(Questing Quokka):计划于 2025 年 10 月发布,将是下一个非 LTS 版本。这一版本将继续推进系统现代化,包括采用 uutils coreutils 作为默认实现。

Ubuntu 26.04 LTS:预计于 2026 年 4 月发布,将是下一个长期支持版本。如果条件成熟,它将继承 Ubuntu 25.10 引入的 uutils coreutils,并可能引入更多创新功能。

长期战略:Canonical 将继续遵循 “每 6 个月发布一次新版本,每两年发布一次 LTS 版本” 的策略,确保用户既能获取最新功能,又能使用稳定版本。同时,公司将继续通过 Ubuntu Pro 订阅服务和企业支持来支持 Ubuntu 的持续开发和维护。

二、Ubuntu 的主要使用场景

Ubuntu 作为一个功能强大且灵活的操作系统,适用于多种场景。以下是 Ubuntu 的主要使用领域及其应用场景:

2.1 软件开发与编程环境

Ubuntu 是全球开发者的首选操作系统之一,为软件开发提供了理想的环境:

开箱即用的开发环境:Ubuntu 默认集成 GCC、Python、Java 等主流开发工具链,且通过 APT 包管理器可快速安装 C/C++、Go、Rust 等语言环境。例如:

# 安装Python3和Pip
sudo apt install python3 python3-pip# 安装Go语言
sudo apt install golang

集成开发工具:Ubuntu 支持各种主流 IDE 和开发工具,包括 Visual Studio Code、PyCharm、Eclipse 等。这些工具可以通过 Ubuntu 软件中心或 Snap 包轻松安装。

多语言支持:Ubuntu 为多种编程语言提供了完善的支持,包括:

  • Python:数据科学、机器学习和 Web 开发的首选语言。

  • JavaScript/TypeScript:通过 Node.js 和相关框架支持现代 Web 应用开发。

  • C/C++:系统级编程和高性能应用开发。

  • Java:企业级应用和 Android 应用开发。

  • Go:云原生应用和微服务开发。

  • Rust:系统级编程和安全关键应用开发。

跨平台开发:Ubuntu 支持多种操作系统的应用开发,包括:

  • Web 应用:支持全栈 Web 开发,从前端到后端。

- 移动应用:通过 Flutter 和 Kotlin 等框架支持跨平台移动应用开发。

- 桌面应用:支持 GNOME、KDE 等桌面环境的应用开发。

- 嵌入式系统:为 Raspberry Pi 等设备提供开发环境。

2.2 服务器管理与云计算

Ubuntu Server 是企业级服务器和云计算环境的理想选择:

稳定性与可靠性:Ubuntu Server 提供了出色的稳定性和可靠性,适合长时间运行关键业务应用。长期支持 (LTS) 版本提供长达 5 年的官方支持,确保企业系统的长期稳定运行。

云原生支持:Ubuntu Server 是 OpenStack 项目的参考操作系统,也是 AWS、Azure 和 Google Cloud 等主流云平台上最受欢迎的客户操作系统之一。

容器与微服务:Ubuntu Server 为容器化应用提供了完美的运行环境,支持 Docker、Kubernetes 和 OpenShift 等容器技术。Docker 在 Ubuntu 上的安装和配置非常简单:

# 更新系统并安装必要工具
sudo apt upgrade -y# 安装Docker引擎
sudo apt install docker.io# 启动Docker服务
sudo systemctl start docker# 验证Docker安装
sudo docker run hello-world

基础设施即代码:Ubuntu 支持多种基础设施自动化工具,如 Ansible、Chef 和 Puppet,使服务器配置和管理更加高效。

服务器监控与管理:Ubuntu 提供了多种服务器监控工具,如 Nagios、Zabbix 和 Prometheus,帮助管理员实时监控服务器性能和状态。

2.3 媒体制作与创意工作

Ubuntu 为媒体制作和创意工作提供了丰富的工具和支持:

图像与图形设计:Ubuntu 拥有许多优秀的媒体制作工具,如 GIMP(图像处理)、Inkscape(矢量图形)、Blender(3D 建模与动画)等,可以用于图像处理、视频剪辑、3D 建模等工作。

视频编辑与后期制作:Ubuntu 支持多种视频编辑工具,包括 OpenShot、Shotcut 和 Lightworks 等。这些工具提供了专业级的视频编辑功能,可满足不同层次用户的需求。

音频处理:Ubuntu 提供了 Audacity、Ardour 和 LMMS 等音频处理工具,支持录音、混音和音乐创作。

创意社区支持:Ubuntu 社区为创意工作者提供了丰富的资源和支持,包括教程、插件和工具包,帮助用户充分发挥创造力。

2.4 游戏开发与娱乐

Ubuntu 在游戏开发和娱乐领域也有出色表现:

游戏开发支持:Ubuntu 是一个非常适合游戏开发的操作系统,它拥有许多游戏引擎和库,如 Unity、Unreal Engine 等。

游戏兼容性:随着 Proton 和 Steam Play 等技术的发展,越来越多的 Windows 游戏可以在 Ubuntu 上运行。Steam 平台在 Ubuntu 上提供了良好的支持,使游戏玩家能够在 Linux 上享受丰富的游戏库。

游戏开发工具链:Ubuntu 提供了完整的游戏开发工具链,包括编译器、调试器和性能分析工具,支持 C++、C# 和 Python 等游戏开发常用语言。

开源游戏生态:Ubuntu 支持众多开源游戏和游戏引擎,为游戏开发者提供了丰富的学习资源和开发工具。

2.5 科学研究与数据分析

Ubuntu 为科学研究和数据分析提供了强大的支持:

科学计算软件:Ubuntu 拥有许多科学计算软件和工具,如 R 语言、Octave 等,适用于数据分析、统计建模和科学可视化。

数据分析环境:Ubuntu 支持多种数据分析工具和框架,包括:

  • Python 数据科学栈:NumPy、Pandas、Matplotlib 和 Scikit-learn 等。

  • R 语言和 RStudio:用于统计分析和数据可视化。

  • Jupyter Notebook:支持交互式数据分析和报告生成。

高性能计算:Ubuntu 为高性能计算 (HPC) 提供了良好的支持,包括对 MPI 和 OpenMP 的支持,以及与 Slurm 和 PBS 等作业调度系统的集成。

机器学习与 AI 研究:Ubuntu 是机器学习和人工智能研究的首选平台之一,支持 TensorFlow、PyTorch 和 Keras 等主流机器学习框架。NVIDIA 的 CUDA 和 cuDNN 库在 Ubuntu 上也有良好的支持,为深度学习提供了硬件加速能力。

2.6 物联网与嵌入式系统

Ubuntu Core 为物联网和嵌入式系统提供了理想的解决方案:

Ubuntu Core:Ubuntu Core 是专为物联网设备设计的轻量级、事务性操作系统,提供行业内最长的支持窗口 ——12 年。

设备管理:Ubuntu Core 提供了强大的设备管理功能,支持远程部署、更新和监控,降低了物联网设备的运维成本。

安全可靠:Ubuntu Core 采用原子化更新和安全启动等技术,确保物联网设备的安全性和可靠性。

边缘计算:Ubuntu Core 为边缘计算提供了理想的平台,支持在靠近数据源的位置进行数据处理和分析。

硬件兼容性:Ubuntu Core 支持多种硬件平台,包括 ARM、x86 和 RISC-V 等架构,适用于各种物联网设备。

2.7 教育与培训

Ubuntu 在教育领域有广泛应用:

教育机构应用:由于其开源特性及其背后庞大的社区力量,Ubuntu 成为了教育机构教授计算机科学基础知识的理想教材之一。

学生学习平台:Ubuntu 为学生提供了一个安全、稳定且功能丰富的学习环境,支持编程、网页设计、多媒体制作等多种学科的学习。

教育资源共享:学校可以利用免费提供的官方教程资料开展课程教学活动;学生则能通过参与贡献项目获得实践经验的机会,从而促进整个 IT 行业的人才培养和发展。

低成本解决方案:Ubuntu 可以在老旧设备上运行良好,为学校和教育机构提供了低成本的计算机解决方案,使更多学生能够接触和学习计算机技术。

三、Ubuntu 常用命令与配置详解

3.1 文件和目录操作命令

文件和目录操作是 Linux 系统管理的基础,Ubuntu 提供了丰富的命令来完成这些操作。

3.1.1 查看目录内容

ls 命令用于列出目录中的文件和子目录:

ls 常用选项:
ls -l  列出的文件以长格式输出,一个文件显示一行
ls -a  显示以“.”开头的文件,“.”开头的为隐藏文件,默认不显示
ls -lh  长格式输出的文件字节数转换为K,M,G的形式方便人来阅读
ls -t  列出的文件按照修改时间的晚和早排序(最近修改的先显示)
ls -tr  列出的文件按照修改时间的早和晚排序(最近修改的后显示)
ls -R  列出当前目录下的所有文件,如果有目录遍历所有目录及其子目录下的文件
ls dir1  默认ls后面的参数如果是目录,则会显示目录下的内容,
ls -d  显示目录本身而不显示目录下的文件,
ls -ld dir1  长格式输出目录本身的详细内容

长格式输出字段说明

total 12
drwxr-xr-x 8 zhjie zhjie 4096 Apr 13 03:04 dmy_mkdir
drwxr-xr-x 4 zhjie zhjie 4096 May 27 19:23 my_work_dir
drwxr-xr-x 5 zhjie zhjie 4096 Jun  5 17:57 tmy_test_dir
  • 第一位代表文件类型:d表示目录,-表示普通文件,l表示链接文件,c表示字符设备文件,b表示块设备文件等。

  • 第一字段后 9 位:表示相关用户、组、其他用户的权限。

  • 第二字段:如果是普通文件表示硬链接的个数;如果是目录表示目录下的一级子目录的个数。

  • 第三字段:文件的属主(文件所属的用户名)。

  • 第四字段:文件的属组(文件所属的用户组名)。

  • 第五字段:文件的字节数(大小)。

  • 第六字段:文件最近一次的修改日期。

  • 第七字段:文件名称。

常用组合

  • ll:长格式输出详细内容,并包含隐藏目录和文件(需要先创建别名)。

  • ls -lt:长格式输出详细内容,按修改时间排序(最近修改的先显示)。

  • ls -ltr:长格式输出详细内容,按修改时间排序(最近修改的后显示)。

  • ls -ld dir1:长格式输出目录本身的详细内容。

3.1.2 切换工作目录

cd 命令用于更改当前工作目录:

cd      切换到当前用户的主目录   /home/用户名
cd ~    切换到用户的主目录的快捷方式   /home/用户名
cd ..   切换到上一级目录
cd -    切换到上一个工作目录
cd+绝对路径 切换到绝对路径  /home/用户名/路径cd /home/aaa_user/ea_dir/g_dir
cd+相对路径 切换到相对路径(一般都在当前目录的下一个路径)cd  ea_dir/g_dir
cd /    切换到根目录
cd ../../../.. 切换到上4个目录
cd ../..  切换到上2个目录

特殊目录

  • 一个点.代表当前目录,写全了是./。

  • 二个点…代表上一级目录,写全了是…/。

3.1.3 显示当前目录路径

pwd 命令用于显示当前工作目录的路径:

pwd  # 显示当前工作目录
3.1.4 创建目录

mkdir 命令用于创建目录:

mkdir dir  创建单个目录
mkdir dir1 dir2  创建多个目录:只需在mkdir命令后用空格分隔每个目录名即可
mkdir -p parent/child/subchild  创建嵌套目录:可以使用-p选项。# 指定目录权限
mkdir -m 755 example  权限使用标准的Linux权限表示法(如755、700等)
mkdir -m u=rwx,g=rx,o=rx dir1  指定目录权限
ls -ld dir1  可验证目录权限。
3.1.5 删除目录

rmdir 命令用于删除空目录:

rmdir dir1  删除单个空目录
rmdir dir1 dir2 dir3  删除多个空目录

rm 命令用于删除文件或目录:

# 删除文件
rm 文件名          # 删除单个文件
rm file1.txt file2.txt  # 删除多个文件# 删除目录
rm -d 空目录名      # 删除空目录(等效于 rmdir)
rm -r 非空目录名    # 递归删除目录及其内容
rm -r  dir1/dir2/txt   直接删除目录和内容(无确认提示)# 强制删除(不提示确认)
rm -f  文件名
rm -rf 目录名      # 强制递归删除目录(无确认提示)# 交互式删除(安全模式)
rm -i  *.txt        # 删除 .txt 文件前逐个确认 
rm -I large_folder  # 删除超过3个文件或递归删除时提示一次# 显示删除过程
rm -v file1.txt    # 输出:removed 'file1.txt'
3.1.6 复制文件或目录

cp 命令用于复制文件或目录:

# 复制文件
cp source_file destination_file  复制文件# 复制目录
cp -r /path/to/source_dir /path/to/destination_dir  使用-r或-R选项来递归复制目录及其内部所有文件和子目录# 保留原有属性(如时间戳)
cp -p example.txt example_copy.txt  保留原文件的修改时间和权限# 交互式复制(询问是否覆盖文件)
cp -i example.txt example_copy.txt  如果目标文件已存在,系统会询问用户是否要覆盖它# 显示被复制的文件名(verbose模式)
cp -v source_file destination_file  显示正在被复制的文件名# 链接文件而非复制(硬链接或符号链接)
cp --reflink=always source_file destination_file  创建硬链接而非复制文件内容(在某些文件系统上支持)
cp -s source_file destination_link  创建符号链接而非复制文件内容
3.1.7 移动或重命名文件或目录

mv 命令用于移动或重命名文件或目录:

# 基本语法 移动文件或目录
mv [选项] 源文件 目标文件
mv [选项] 源文件1 源文件2 ... 目标目录# 常见选项
-i 或 --interactive:在覆盖文件之前提示用户确认
-f 或 --force:强制移动文件或目录,不提示用户确认,并覆盖目标位置的文件(如果存在)
-n 或 --no-clobber:不覆盖已存在的文件
-v 或 --verbose:显示命令执行过程中的详细信息# 重命名文件或目录
mv file1.txt file2.txt  将文件file1.txt重命名为file2.txt
mv s_dir sf_dir  将目录s_dir重命名为sf_dir# 移动文件
mv file1.txt /home/user/Documents/  将文件file1.txt移动到/home/user/Documents/目录
mv file1.txt file2.txt /home/user/Documents/  将多个文件移动到目标目录# 强制移动(不提示覆盖)
mv -f file1.txt file2.txt  强制将file1.txt移动为file2.txt,即使file2.txt已存在也不提示用户确认# 在覆盖前提示
mv -i file1.txt file2.txt  在将file1.txt移动为file2.txt之前提示用户确认(如果file2.txt已存在)# 显示详细信息
mv -v file1.txt /home/user/Documents/  显示移动过程中的详细信息# 移动目录
mv dir1 /home/user/Documents/  将目录dir1移动到/home/user/Documents/
3.1.8 创建空文件或更新时间戳

touch 命令用于创建空文件或更新文件的时间戳:

# 创建新文件
touch filename.txt  在当前目录下创建一个名为filename.txt的空文件。如果文件已经存在,这个命令将不会改变文件的内容,但会更新文件的访问和修改时间。# 更新文件时间戳
touch existingfile.txt  更新existingfile.txt的访问和修改时间为当前时间。# 使用特定时间更新文件时间戳
touch -t 202502081200 filename.txt  将filename.txt的时间戳设置为2025年2月8日12:00。时间格式通常是[[CC]YY]MMDDhhmm[.ss]# 创建多个文件
touch file1.txt file2.txt file3.txt  在当前目录下创建三个新的空文件# 更改文件的访问时间或修改时间
touch -a filename.txt  只更新访问时间,不改变修改时间
touch -m filename.txt  只更新修改时间,不改变访问时间# 显示详细信息
touch -cv filename.txt  如果文件不存在,touch命令不会创建它,但会显示一个消息说明文件不存在

3.2 文件查看与编辑命令

3.2.1 查看文件内容

cat 命令用于查看、创建或合并文件内容:

# 基本语法
cat [选项] [文件名...]# 常用功能及示例
cat filename.txt  显示filename.txt的全部内容到终端
cat file1.txt file2.txt  依次显示file1.txt和file2.txt的内容
cat file1.txt file2.txt > combined.txt  将file1.txt和file2.txt的内容合并后保存到combined.txt(已有文件会被覆盖)
cat file1.txt >> file2.txt  将file1.txt的内容追加到file2.txt的末尾(不覆盖原内容)
cat -n filename.txt  输出内容时显示行号(包括空行)
cat -b filename.txt  仅对非空行显示行号(跳过空行)
nl filename.txt  仅对非空行显示行号(跳过空行)。功能更强大
cat -v filename.txt  显示文件中的非打印字符(如制表符、换行符等)
cat > newfile.txt  输入内容后按Ctrl+D保存,创建一个新文件newfile.txt
cat >> existing.txt  输入内容后按Ctrl+D,将内容追加到existing.txt末尾
cat file.txt | grep "keyword"  将file.txt的内容通过管道传递给grep,搜索包含"keyword"的行# 常用选项
选项 说明
-n 显示所有行的行号
-b 仅显示非空行的行号
-s 压缩连续空行为一行
-v 显示非打印字符(如制表符 ^I)
-e 在行尾显示 $(结合 -v 使用)
-t 显示制表符为 ^I(结合 -v 使用)# 高级用法
cat -s file.txt  将多个连续空行合并为一行显示
cat -v -e -t file.txt  显示非打印字符、行尾$和制表符
cat file.txt | tee output.txt  显示文件内容的同时保存到output.txt
3.2.2 分页查看文件

more 命令用于分页查看文件内容:

# 基本语法
more [选项] 文件名# 常用操作
空格键:向下翻一页
回车键:向下滚动一行
b:向上翻一页
q:退出more
/字符串:搜索字符串(按n跳转到下一个匹配项)
:f:显示当前文件名和行号# 常用选项
-d:在提示用户时显示 [Press space to continue, 'q' to quit.]
-n:设置每页显示的行数(例如 -10 表示每页10行)
+n:从文件的第n行开始显示

less 命令是more的增强版,功能更强大:

# 基本语法
less [选项] 文件名# 常用操作
空格键:向下翻一页
回车键:向下滚动一行
b:向上翻一页
方向键:上下滚动一行
Page Up/Page Down:上下翻页
g:跳转到文件开头
G:跳转到文件末尾
q:退出less
/字符串:向前搜索字符串(按n跳转到下一个匹配项,N跳转到上一个匹配项)
?字符串:向后搜索字符串
&字符串:仅显示包含字符串的行
-N:显示行号
:e 文件名:打开另一个文件
:n:切换到下一个文件(如果打开了多个文件)
:p:切换到上一个文件(如果打开了多个文件)# 常用选项
-N:显示行号
-i:搜索时忽略大小写
-S:禁止自动换行(适合查看宽表)
-F:如果文件内容可以一屏显示,则直接退出less(相当于cat)
-X:退出时不保留屏幕内容
3.2.3 查看文件头部或尾部

head 命令用于查看文件的开头部分:

# 基本语法
head [选项] [文件...]# 示例
head file.txt  显示文件前10行(默认)
head -n 5 file.txt  显示前5行(或简写head -5 file.txt)
head -c 100 file.txt  显示前100个字节
head -q file1.txt  不显示文件名
head -v file1.txt  显示文件名
head file1.txt file2.txt  合并显示多个文件的前10行(自动标注文件名)

tail 命令用于查看文件的结尾部分:

# 基本语法
tail [选项] [文件...]# 示例
tail file.txt  显示文件最后10行(默认)
tail -n 5 file.txt  显示最后5行(或简写tail -5 file.txt)
tail -c 100 file.txt  显示最后100个字节
tail -q file1.txt  不显示文件名
tail -v file1.txt  显示文件名
tail file1.txt file2.txt  合并显示多个文件的前10行(自动标注文件名)# 特殊功能
tail -f /var/log/syslog  实时监控日志文件新增内容(按Ctrl+C退出)
tail -f -s 2 /var/log/nginx/access.log  监控日志并每2秒刷新一次
tail -F /var/log/myapp.log  跟踪日志轮转(如logrotate后的文件)
3.2.4 搜索文件内容

grep 命令用于在文件中查找指定模式的文本:

# 基本语法
grep [选项] "搜索模式" [文件或目录]# 常用选项
-i 忽略大小写
-v 反向匹配(显示不包含模式的行)
-n 显示匹配行的行号
-r 或 -R 递归搜索目录中的文件
-l 仅显示包含匹配项的文件名
-c 统计匹配的行数
-w 全词匹配(避免部分匹配)
-A NUM 显示匹配行及其后NUM行
-B NUM 显示匹配行及其前NUM行
-C NUM 显示匹配行及其前后各NUM行
-e 指定多个模式(如 grep -e "模式1" -e "模式2")
-f FILE 从文件中读取模式# 常见用法示例
grep "hello" file.txt  在file.txt中查找包含hello的行
grep -i "hello" file.txt  忽略大小写匹配hello、Hello、HELLO等
grep -r "hello" /path/to/dir/  递归搜索目录下所有文件中的hello
grep -n "hello" file.txt  输出格式:行号:匹配的行
grep -c "hello" file.txt  输出匹配的行数(非匹配次数)
grep -v "hello" file.txt  显示不包含hello的行
grep "^[0-9]" file.txt  查找以数字开头的行(支持基础正则表达式)
grep -e "hello" -e "world" file.txt  匹配hello或world
grep -f patterns.txt file.txt  patterns.txt中每行一个搜索模式
grep -C 2 "hello" file.txt  显示匹配行及其前后各2行# 高级用法
ps aux | grep "nginx"  查找正在运行的nginx进程
zgrep "hello" file.gz  无需解压即可搜索.gz文件
grep -I "hello" /path/to/dir/  忽略二进制文件(如.exe、.o)

3.3 系统信息与管理命令

3.3.1 系统信息查看

uname 命令用于显示系统信息:

uname -a  显示系统所有信息

top htop 命令用于实时显示系统进程和资源使用情况:

top  实时显示系统进程和资源使用情况。按P可按CPU排序
htop  更友好的系统资源监控工具(需安装)。安装命令:sudo apt install htop && htop

ps 命令用于显示当前运行的进程状态:

ps  显示当前用户的进程
ps -aux  显示所有用户的所有进程
ps -aux | grep samba  查找与samba相关的进程
3.3.2 系统资源查看

df 命令用于检查磁盘空间使用情况:

df -h  以易读格式显示磁盘空间使用情况

du 命令用于估算文件和目录的磁盘使用情况:

du -sh  显示当前目录的总大小
du -sh /home/*  汇总各用户目录大小

free 命令用于显示内存使用情况:

free -h  以易读格式显示内存使用情况
free -m  以MB为单位显示内存使用情况

uptime 命令用于显示系统运行时间和负载平均值:

uptime  显示系统运行时间和负载平均值
3.3.3 系统日志查看

dmesg 命令用于显示内核日志:

dmesg  显示内核日志

journalctl 命令用于查看系统日志:

journalctl  查看系统日志
journalctl -f  实时查看日志
journalctl -u  查看指定服务的日志
3.3.4 系统性能监控

vmstat 命令用于报告虚拟内存统计信息:

vmstat  报告虚拟内存统计信息

iostat 命令用于报告 CPU 和输入 / 输出统计信息:

iostat  报告CPU和输入/输出统计信息
3.3.5 系统关机与重启

系统关机命令

halt 立刻关机
poweroff 立刻关机
shutdown -h now 立刻关机(root用户使用)
shutdown -h 10 10分钟后自动关机,shutdown -c命令取消重启

系统重启命令

shutdown -r 10 过10分钟自动重启(root用户使用)

3.4 用户与权限管理命令

3.4.1 用户管理

sudo 命令用于以超级用户身份执行命令:

sudo command  以超级用户身份执行命令
sudo su  切换到root用户

su 命令用于切换用户身份:

su username  切换到指定用户
su -  切换用户并切换到该用户的环境

useradd 命令用于添加新用户:

sudo adduser dev_user  添加新用户dev_user

userdel 命令用于删除用户:

sudo userdel username  删除用户
sudo userdel -r username  删除用户及其主目录

passwd 命令用于修改用户密码:

passwd  修改当前用户密码。需要先输入旧密码,然后输入新密码两次
sudo passwd username  修改指定用户的密码
3.4.2 权限管理

chmod 命令用于更改文件或目录的权限:

chmod 755 script.sh  将script.sh的权限设置为所有者可读写执行,组和其他用户可读写
chmod u+x file.txt  给文件所有者添加执行权限

chown 命令用于更改文件或目录的所有者:

sudo chown www-data:www-data index.php  将index.php的所有者和所属组更改为www-data

chgrp 命令用于更改文件或目录的所属组:

chgrp groupname filename  更改文件的所属组
3.4.3 用户组管理

groupadd 命令用于添加用户组:

sudo groupadd domain_users  添加名为domain_users的用户组

usermod 命令用于修改用户属性:

sudo usermod -aG domain_users alice  将用户alice添加到domain_users组中

3.5 软件包管理命令

3.5.1 APT 包管理

apt 命令是 Ubuntu 中用于管理软件包的主要工具:

# 更新软件包列表
sudo apt update  更新本地包索引,从各个仓库获取最新的软件包列表# 升级系统
sudo apt upgrade -y  升级系统中已安装的软件包
sudo apt full-upgrade -y  升级系统并处理依赖关系# 安装软件包
sudo apt install package_name  安装指定软件包
sudo apt install package1 package2  同时安装多个软件包# 卸载软件
sudo apt remove package  卸载软件
sudo apt remove --purge package  彻底清除软件(包括配置文件)# 搜索软件包
apt search package_keyword  搜索包含指定关键词的软件包
apt show package_name  显示软件包的详细信息# 清理系统
sudo apt autoclean  清理已下载的软件包缓存,但保留当前版本的软件包
sudo apt clean  清理所有已下载的软件包缓存
sudo apt autoremove  自动删除不再使用的软件包及其依赖项
3.5.2 Snap 包管理

snap 命令用于管理 Snap 软件包:

# 安装Snap包
sudo snap install package_name  安装指定Snap包# 卸载Snap包
sudo snap remove package_name  卸载指定Snap包# 列出已安装的Snap包
snap list  列出所有已安装的Snap包# 更新Snap包
sudo snap refresh  更新所有已安装的Snap包
sudo snap refresh package_name  更新指定Snap包# 查看Snap包信息
snap info package_name  查看指定Snap包的详细信息

3.6 网络操作命令

3.6.1 网络配置查看

ip 命令用于查看和配置网络接口:

ip addr show  查看网络配置

ifconfig 命令用于查看网络接口信息(需要安装):

sudo apt install net-tools  安装net-tools包
ifconfig  查看网络接口信息
3.6.2 网络连接测试

ping 命令用于测试网络连接:

ping 192.168.1.100  测试与IP地址192.168.1.100的连接

traceroute 命令用于跟踪网络数据包的路由路径:

traceroute example.com  跟踪到example.com的路由路径
3.6.3 端口和服务检查

netstat ss 命令用于查看网络连接和端口:

netstat -tulnp  显示监听中的TCP/UDP端口及对应进程
ss -tunlp  替代netstat的高速工具,查看TCP/UDP端口及对应进程

lsof 命令用于查看打开的文件和网络连接:

lsof -i :80  查看使用端口80的进程
3.6.4 文件传输

wget 命令用于从网络下载文件:

wget https://example.com/file.tar.gz  下载指定URL的文件

curl 命令用于传输数据:

curl -O https://example.com/file.conf  下载并保存文件

scp 命令用于安全复制文件:

scp user@remote:/path/to/file .  从远程服务器下载文件到当前目录
scp file root@domain-server:/shared  将文件上传至远程服务器的/shared目录

rsync 命令用于高效同步数据:

rsync -avz /local/dir user@server:/remote/dir  本地目录与远程目录的同步,支持断点续传

3.7 压缩与解压缩命令

3.7.1 tar 格式

tar 命令用于创建和提取 tar 归档文件:

# 打包
tar -czvf backup.tar.gz folder/  创建名为backup.tar.gz的压缩归档文件,包含folder目录下的所有内容# 解压
tar -xzvf backup.tar.gz  解压backup.tar.gz文件到当前目录
3.7.2 zip 格式

zip unzip 命令用于创建和提取 zip 格式的压缩文件:

# 压缩并加密
zip -r -e secret.zip private_data/  创建加密的zip文件# 解压到指定目录
unzip secret.zip -d ./decrypted/  将secret.zip解压到./decrypted/目录
3.7.3 高级压缩示例
# 使用bzip2高压缩率打包
tar -cjvf archive.tar.bz2 data_folder/  创建使用bzip2压缩的tar归档文件# 分卷压缩大文件(如备份)
zip -s 500m large_backup.zip large_folder/  将large_folder分卷压缩成每个500MB的多个zip文件

四、Ubuntu 常用场景搭建方法

4.1 LAMP 服务器搭建

LAMP(Linux, Apache, MySQL, PHP)是最流行的 Web 应用程序平台之一。在 Ubuntu 上搭建 LAMP 服务器非常简单。

4.1.1 安装 Apache Web 服务器

Apache 是世界上使用最广泛的 Web 服务器之一:

# 更新系统并安装Apache
sudo apt update
sudo apt install apache2# 启动Apache服务
sudo systemctl start apache2# 验证安装
sudo systemctl status apache2  检查服务状态
curl http://localhost  或在浏览器中访问http://localhost,应看到Apache的默认页面

安装完成后,可以通过编辑/etc/apache2/apache2.conf文件来配置 Apache。常见的配置包括虚拟主机、日志记录和模块启用等。

4.1.2 安装 MySQL 数据库服务器

MySQL 是最流行的开源关系型数据库管理系统:

# 安装MySQL服务器
sudo apt install mysql-server# 启动MySQL服务
sudo systemctl start mysql# 验证安装
sudo systemctl status mysql  检查服务状态# 运行安全设置脚本
sudo mysql_secure_installation

在安全设置过程中,你将被提示设置 root 密码、删除匿名用户、禁用远程 root 登录和删除测试数据库。

4.1.3 安装 PHP 处理引擎

PHP 是一种流行的服务器端脚本语言,特别适合 Web 开发:

# 安装PHP及其Apache模块
sudo apt install php libapache2-mod-php php-mysql# 安装常用PHP扩展
sudo apt install php-cli php-fpm php-json php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath# 验证PHP安装
php -v  应显示PHP的版本信息

安装完成后,需要重启 Apache 服务器使 PHP 模块生效:

sudo systemctl restart apache2
4.1.4 测试 LAMP 集成

创建一个测试 PHP 文件来验证 LAMP 栈的集成:

# 创建测试文件
sudo nano /var/www/html/info.php

在文件中输入以下内容:

<?php
phpinfo();
?>

保存并关闭文件。然后在浏览器中访问http://localhost/info.php,你应该看到 PHP 的信息页面,其中包含有关 PHP 配置的详细信息。

完成测试后,建议删除测试文件:

sudo rm /var/www/html/info.php

4.2 Docker 环境搭建

Docker 是一个开源的应用容器引擎,允许开发者将应用程序及其依赖打包成一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

4.2.1 安装 Docker 引擎

在 Ubuntu 25.04 上安装 Docker 的步骤如下:

# 更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新包索引并安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 验证Docker安装
sudo docker run hello-world# 将当前用户添加到docker组(可选但推荐)
sudo usermod -aG docker $USER

添加完成后,需要注销并重新登录才能生效。

4.2.2 配置 Docker 镜像加速

为了提高 Docker 镜像的下载速度,可以配置镜像加速器:

# 创建或编辑Docker配置文件
sudo nano /etc/docker/daemon.json

添加以下内容(使用阿里云镜像):

{"registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]
}

或者使用清华大学镜像:

{"registry-mirrors": ["https://docker.mirrors.tuna.tsinghua.edu.cn"]
}

保存后重启 Docker:

sudo systemctl restart docker
4.2.3 启用 Docker 服务开机自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
4.2.4 使用 Docker

安装完成后,可以使用以下命令管理 Docker 容器:

# 列出所有容器
docker container ls -a# 运行一个nginx容器
docker run -d -p 80:80 --name my-nginx nginx:latest# 查看容器日志
docker logs my-nginx# 进入正在运行的容器
docker exec -it my-nginx bash# 停止和启动容器
docker stop my-nginx
docker start my-nginx# 删除容器
docker rm my-nginx# 搜索镜像
docker search ubuntu# 拉取镜像
docker pull ubuntu:latest# 列出所有镜像
docker image ls# 删除镜像
docker rmi image_name_or_id

4.3 Kubernetes 集群搭建

Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

4.3.1 准备工作

在搭建 Kubernetes 集群之前,需要准备以下资源:

硬件要求

  • 至少 3 台 Ubuntu 虚拟机(推荐配置:内存≥2GB,CPU≥2 核)

  • 网络设置为桥接模式,选择 VMnet0 网卡

  • IP 规划示例:

  • Master 节点:192.168.31.224

  • Worker 节点 1:192.168.31.225

  • Worker 节点 2:192.168.31.226

软件要求

  • 所有节点安装 Docker

  • 所有节点安装 kubeadm、kubelet 和 kubectl

4.3.2 安装 Docker

在所有节点上安装 Docker:

# 更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新包索引并安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 将当前用户添加到docker组
sudo usermod -aG docker $USER# 启用并启动Docker服务
sudo systemctl enable docker
sudo systemctl start docker
4.3.3 安装 Kubernetes 组件

在所有节点上安装 kubeadm、kubelet 和 kubectl:

# 更新系统并安装必要工具
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gpg# 添加Kubernetes公共签名密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg# 添加Kubernetes软件源
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list# 更新包索引并安装Kubernetes组件
sudo apt update
sudo apt install -y kubelet kubeadm kubectl# 锁定版本(防止自动更新)
sudo apt-mark hold kubelet kubeadm kubectl
4.3.4 初始化 Master 节点

在 Master 节点上执行以下命令初始化 Kubernetes 集群:

# 初始化集群
sudo kubeadm init \--kubernetes-version=1.32.2 \--control-plane-endpoint=k8smaster \--apiserver-advertise-address=192.168.31.224 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--image-repository=registry.aliyuncs.com/google_containers \--cri-socket=unix:///var/run/cri-dockerd.sock \--upload-certs \--v=9

参数说明:

  • kubernetes-version:指定 Kubernetes 版本

  • control-plane-endpoint:集群 Master 的命名

  • apiserver-advertise-address:Master 节点的 IP 地址

  • pod-network-cidr:Pod 网络地址段

  • service-cidr:Service 网络地址段

  • image-repository:指定使用国内镜像

  • cri-socket:指定使用的容器运行时

初始化成功后,会输出以下信息:

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.31.224:6443 --token tjywv8.pdv1mzaqishq1j0w \--discovery-token-ca-cert-hash sha256:01a102ec408928b211c87f211127ae2ef74fb3bb6ec67b9e7f570d509c176efb

执行以下命令配置 kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.3.5 安装网络插件

在 Master 节点上安装 Calico 网络插件:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

或者安装 Flannel 网络插件:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
4.3.6 加入 Worker 节点

在 Worker 节点上执行 Master 节点初始化后输出的kubeadm join命令:

sudo kubeadm join 192.168.31.224:6443 --token tjywv8.pdv1mzaqishq1j0w \--discovery-token-ca-cert-hash sha256:01a102ec408928b211c87f211127ae2ef74fb3bb6ec67b9e7f570d509c176efb
4.3.7 验证集群

在 Master 节点上执行以下命令验证集群状态:

kubectl get nodes

如果所有节点的状态都是Ready,则说明集群搭建成功:

NAME        STATUS   ROLES           AGE     VERSION
k8smaster   Ready    control-plane   15h     v1.32.2
k8snode1    Ready    <none>          15h     v1.32.2
k8snode2    Ready    <none>          15h     v1.32.2
4.3.8 部署示例应用

在集群中部署一个示例应用:

# 创建Deployment
kubectl create deployment nginx --image=nginx# 暴露为Service
kubectl expose deployment nginx --port=80 --type=NodePort# 查看Pod和Service
kubectl get pods
kubectl get svc

在浏览器中访问http://:,应看到 Nginx 的欢迎页面。

4.4 时间同步安全配置

Ubuntu 25.10 将默认采用 Chrony 作为 NTP 实现,并启用网络时间安全(NTS)协议。以下是在 Ubuntu 上配置 Chrony 和 NTS 的方法。

4.4.1 安装 Chrony
sudo apt update
sudo apt install chrony
4.4.2 配置 Chrony

编辑 Chrony 配置文件:

sudo nano /etc/chrony/chrony.conf

添加以下内容:

# 使用NTS服务器
server 0.ubuntu.pool.ntp.org iburst nts
server 1.ubuntu.pool.ntp.org iburst nts
server 2.ubuntu.pool.ntp.org iburst nts
server 3.ubuntu.pool.ntp.org iburst nts# 启用NTS客户端
ntsclient

保存并关闭文件。

4.4.3 重启 Chrony 服务
sudo systemctl restart chrony
4.4.4 验证时间同步
# 查看时间同步状态
chronyc sources -v# 查看系统时间
timedatectl

五、总结与展望

5.1 Ubuntu 的优势与适用场景总结

Ubuntu 作为最受欢迎的 Linux 发行版之一,具有以下显著优势:

易用性:Ubuntu 提供了友好的图形界面和直观的操作体验,降低了 Linux 系统的使用门槛。即使是初次接触 Linux 的用户,也能快速上手。

稳定性:长期支持 (LTS) 版本提供长达 5 年的官方支持,确保企业系统的长期稳定运行。Ubuntu Server 在服务器环境中表现出色,能够长时间稳定运行。

安全性:Ubuntu 采用 Sudo 工具和 AppArmor 等安全机制,提供了强大的安全保障。系统设计注重安全性,确保用户数据和系统的安全。

开源与免费:Ubuntu 是完全免费的开源操作系统,用户可以自由使用、复制、分发和修改。这一特性使其成为预算有限的个人和组织的理想选择。

丰富的软件生态:Ubuntu 拥有庞大的软件仓库,提供了丰富的软件资源。Snap 包管理系统进一步扩展了软件获取渠道,使用户能够轻松安装各种应用程序。

多平台支持:Ubuntu 支持 x86、ARM、RISC-V 等多种硬件架构,从个人电脑到服务器,从桌面到嵌入式设备,Ubuntu 都能提供良好的支持。

基于这些优势,Ubuntu 适用于以下场景:

  • 个人办公与学习:提供了完整的办公和学习环境,支持日常办公、网页浏览、多媒体娱乐等功能。

  • 软件开发与测试:提供了完善的开发工具链和环境,支持多种编程语言和开发框架。

  • 服务器和云计算:Ubuntu Server 是企业级服务器和云计算环境的理想选择,提供了稳定性和可靠性。

  • 科学研究与数据分析:支持多种科学计算和数据分析工具,为科研人员提供了理想的工作平台。

  • 创意设计与媒体制作:提供了丰富的创意设计和媒体制作工具,满足创意工作者的需求。

  • 物联网与嵌入式系统:Ubuntu Core 为物联网设备提供了轻量级、安全可靠的操作系统解决方案。

5.2 Ubuntu 的未来发展展望

Ubuntu 的未来发展将继续围绕用户需求和技术趋势展开,以下是几个关键发展方向:

Rust 语言应用扩展:Canonical 正积极推动 Rust 语言在 Ubuntu 中的应用,从即将推出的 Ubuntu 25.10 开始,将用基于 Rust 的 uutils 替换 GNU coreutils,提高系统的内存安全性和可靠性。

AI 与机器学习支持增强:Ubuntu 将进一步整合 AI 和机器学习工具链,预装 TensorFlow、PyTorch 等框架,优化 CUDA 支持,为 AI 工作负载提供更好的支持。

时间同步安全革新:Ubuntu 25.10 将默认采用 Chrony 作为 NTP 实现,并启用网络时间安全(NTS)协议,提供更高的安全性和准确性。

云原生技术深化:Ubuntu 将继续深化对云原生技术的支持,包括容器、微服务和 Kubernetes 等,为云原生应用提供更好的运行环境。

物联网与边缘计算扩展:Ubuntu Core 将继续发展,为物联网和边缘计算提供更完善的解决方案,支持更多的硬件平台和应用场景。

用户体验优化:Ubuntu 将继续优化用户体验,提升系统性能和资源利用效率,为用户提供更加流畅的操作体验。

5.3 如何参与 Ubuntu 社区

Ubuntu 的成功离不开全球社区的贡献。如果你想参与 Ubuntu 社区,可以通过以下方式:

报告问题和建议:通过 Ubuntu 的问题跟踪系统报告问题或提出建议。

翻译文档:帮助将 Ubuntu 文档翻译成其他语言,扩大 Ubuntu 的全球影响力。

代码贡献:参与 Ubuntu 的软件开发,提交代码补丁或新功能。

测试开发版本:测试 Ubuntu 的开发版本,帮助发现和修复问题。

回答问题:在 Ask Ubuntu 等社区平台上回答其他用户的问题,分享你的知识和经验。

本地化:参与 Ubuntu 的本地化工作,包括界面翻译和输入法支持等。

文档编写:帮助编写和完善 Ubuntu 的文档,使更多用户能够从你的知识中受益。

通过参与 Ubuntu 社区,你不仅可以帮助改进 Ubuntu,还能学习到新的技能,结识来自世界各地的开发者和用户。

六、附录:Ubuntu 命令速查表

6.1 文件和目录操作

命令说明示例
ls列出目录内容ls -l 列出详细信息
cd更改当前工作目录cd ~ 切换到主目录
pwd显示当前工作目录pwd
mkdir创建目录mkdir -p parent/child
rmdir删除空目录rmdir dir
rm删除文件或目录rm -rf dir
cp复制文件或目录cp -r source dest
mv移动或重命名mv old new
touch创建空文件或更新时间戳touch file.txt

6.2 文件查看与编辑

命令说明示例
cat查看文件内容cat file.txt
more分页查看文件more file.txt
less高级分页查看less file.txt
head查看文件开头head -n 10 file.txt
tail查看文件结尾tail -f file.txt
grep搜索文件内容grep “pattern” file.txt

6.3 系统信息与管理

命令说明示例
uname显示系统信息uname -a
top实时监控进程top
htop增强版进程查看htop
df查看磁盘空间df -h
du查看目录占用du -sh /home
free内存使用情况free -m
ps进程快照ps -aux
kill终止进程kill -9 PID
systemctl控制服务启停sudo systemctl restart apache2

6.4 用户与权限管理

命令说明示例
sudo以超级用户身份执行命令sudo command
su切换用户身份su username
useradd添加用户sudo useradd user
passwd修改密码passwd
chmod修改权限chmod 755 file
chown修改所有者sudo chown user:group file
groupadd添加用户组sudo groupadd group

6.5 软件包管理

命令说明示例
apt update更新软件包列表sudo apt update
apt upgrade升级系统sudo apt upgrade
apt install安装软件包sudo apt install package
apt remove卸载软件sudo apt remove package
apt search搜索软件包apt search keyword
snap install安装 Snap 包sudo snap install package
snap remove卸载 Snap 包sudo snap remove package

6.6 网络操作

命令说明示例
ip查看网络配置ip addr show
ping测试网络连接ping 192.168.1.1
netstat查看网络连接netstat -tuln
ss替代 netstat 的高速工具ss -tunlp
wget下载文件wget https://example.com/file
curl传输数据curl -O https://example.com/file
scp安全复制文件scp user@remote:file .
rsync高效同步数据rsync -avz local remote

6.7 压缩与解压缩

命令说明示例
tar创建 / 提取 tar 归档tar -czvf archive.tar.gz dir
zip创建 zip 压缩文件zip -r archive.zip dir
unzip解压 zip 文件unzip archive.zip
gzip压缩文件gzip file.txt
gunzip解压 gzip 文件gunzip file.txt.gz

七、参考资源

以下是一些关于 Ubuntu 的有用资源,供进一步学习和参考:

官方文档

  • Ubuntu 官方网站:https://ubuntu.com/

  • Ubuntu Server 文档:https://ubuntu.com/server/docs

  • Ubuntu 社区文档:https://help.ubuntu.com/

社区资源

  • Ask Ubuntu:https://askubuntu.com/

  • Ubuntu 论坛:https://discourse.ubuntu.com/

  • Ubuntu Wiki:https://wiki.ubuntu.com/

开发资源

  • Ubuntu 开发者文档:https://ubuntu.com/desktop/developers

  • Ubuntu API 文档:https://api-docs.ubuntu.com/

  • Ubuntu Core 文档:https://ubuntu.com/core/docs

学习资源

  • Ubuntu 教程:https://ubuntu.com/tutorials

  • Ubuntu 手册:https://ubuntu-manual.org/

  • Ubuntu 认证课程:https://ubuntu.com/training

安全资源

  • Ubuntu 安全公告:https://ubuntu.com/security/notices

  • Ubuntu 安全团队博客:https://ubuntu.com/blog/category/security

  • Ubuntu 漏洞数据库:https://ubuntu.com/security/cve

通过这些资源,你可以进一步深入学习 Ubuntu 操作系统,了解最新的技术动态和最佳实践,成为一名熟练的 Ubuntu 用户和开发者。

无论你是个人用户、开发者、系统管理员还是企业决策者,Ubuntu 都能为你提供强大、灵活且可靠的操作系统解决方案。随着技术的不断发展和 Ubuntu 社区的持续壮大,Ubuntu 将继续引领开源操作系统的发展潮流,为用户创造更大的价值。

http://www.xdnf.cn/news/1353007.html

相关文章:

  • Java JVM 超级详细指南
  • 在Linux环境中为Jupyter Lab安装Node.js环境
  • 云计算之云主机Linux是什么?有何配置?如何选?
  • JavaSpring+mybatis+Lombok,实现java架构[保姆教程]
  • Linux PCI 子系统:工作原理与实现机制深度分析
  • Bartender 5 Mac 多功能菜单栏管理
  • 【LeetCode】85. 最大矩形 (暴力枚举)
  • 嵌入式软件/硬件工程师面试题集
  • MySql知识梳理之DDL语句
  • 力扣hot100:搜索二维矩阵与在排序数组中查找元素的第一个和最后一个位置(74,34)
  • 知识蒸馏 Knowledge Distillation 概率链式法则(Probability Chain Rule)
  • Java接口响应速度优化
  • springboot项目结构
  • leetcode80:删除有序数组中的重复项 II(快慢指针法)
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(6):51-60语法
  • Day33 MLP神经网络的训练
  • 「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日
  • 前端 H5分片上传 vue实现大文件
  • 【卫星通信】超低码率语音编码ULBC:EnCodec神经音频编解码器架构深度解析
  • piclist+gitee操作指南
  • 【Day 11】238.除自身以外数组的乘积
  • Transformer核心概念I-token
  • SpringBoot 快速上手:从环境搭建到 HelloWorld 实战
  • Excel 条件高亮工具,秒高亮显示符合筛选条件的行数据
  • 「数据获取」《中国能源统计年鉴》(1986-2023)(获取方式看绑定的资源)
  • 蓝桥杯算法之基础知识(2)——Python赛道
  • 【51单片机学习】直流电机驱动(PWM)、AD/DA、红外遥控(外部中断)
  • mmdetection:记录算法训练配置文件
  • A Large Scale Synthetic Graph Dataset Generation Framework的学习笔记
  • Mysql EXPLAIN详解:从底层原理到性能优化实战