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.04 | Plucky Puffin | 2025 年 4 月 | 2026 年 1 月 | - | - |
24.10 | Oracular Oriole | 2024 年 10 月 | 2025 年 7 月 | - | - |
24.04 LTS | Noble Numbat | 2024 年 4 月 | 2029 年 4 月 | 2034 年 4 月 | 2036 年 4 月 |
22.04 LTS | Jammy Jellyfish | 2022 年 4 月 | 2027 年 4 月 | 2032 年 4 月 | 2034 年 4 月 |
20.04 LTS | Focal Fossa | 2020 年 4 月 | 2025 年 4 月 | 2030 年 4 月 | 2032 年 4 月 |
18.04 LTS | Bionic Beaver | 2018 年 4 月 | 2023 年 4 月 | 2028 年 4 月 | 2030 年 4 月 |
16.04 LTS | Xenial Xerus | 2016 年 4 月 | 2021 年 4 月 | 2026 年 4 月 | 2028 年 4 月 |
14.04 LTS | Trusty Tahr | 2014 年 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 将继续引领开源操作系统的发展潮流,为用户创造更大的价值。