Linux 不是「另一個 Windows」,它是一個內核加上龐大的用戶空間工具鏈構成的操作系統生態。學習 Linux 的核心是理解系統如何工作,而非記住命令語法。本文將學習路徑劃分為六個維度,由淺入深,適合不同階段學習者定位自我、規劃路徑。
| 階段 | 重點目錄/子系統 | 推薦資源 |
|---|---|---|
| 入門 | init/, kernel/ (sched.c, fork.c), mm/ (slab, page alloc) | 《Linux Kernel Development》Robert Love |
| 進階 | fs/ (VFS, ext4/xfs), net/ (TCP/IP, socket), drivers/ (platform, pci, usb) | 《Understanding the Linux Kernel》Bovet & Cesati |
| 實戰 | 編寫簡單模塊、提交補丁到 LKML、參與子系統維護 | Linux Kernel Mailing List, kernelnewbies.org |
命令行 → 配置文件 → 腳本自動化 → 基礎設施即代碼
│ │ │ │
bash /etc/* Python/Ansible Terraform/K8s
不要只看文檔,搭建實驗環境(虛機/雲服務器/樹莓派)動手搞壞再修好。每個知識點都要能回答:「原理什麼?怎麼排查?怎麼自動化?」
| 領域 | 主流技術 | Linux 特有優勢 |
|---|---|---|
| Web 後端 | Java/Spring, Go, Python, Node.js, Rust | 高併發網絡模型、epoll/io_uring、容器化原生支持 |
| 系統編程 | C/C++, Rust | 直接調用 syscall、內核模塊、eBPF |
| 嵌入式/IoT | Yocto, Buildroot, Zephyr, RT-Linux | 可裁剪內核、實時補丁、交叉編譯工具鏈成熟 |
| 數據庫 | MySQL, PostgreSQL, Redis, ClickHouse, TiDB | 大內存頁、NUMA 感知、裸設備訪問、高性能文件系統 |
| 中間件 | Kafka, RabbitMQ, Etcd, Consul | 高效進程間通信、文件鎖、信號量、共享內存 |
/ 非 \| 服務類型 | 代表軟件 | 關鍵技術點 |
|---|---|---|
| Web 服務器 | Nginx, Apache, OpenResty | 事件驅動、反向代理、負載均衡、SSL 卸載、Lua 腳本 |
| 應用服務器 | Tomcat, Jetty, Gunicorn, uWSGI | 進程模型、線程池、JVM 調優、熱部署 |
| 數據庫 | MySQL, PostgreSQL, MongoDB | 存儲引擎、索引、鎖、MVCC、複製、分片 |
| 緩存/隊列 | Redis, Memcached, Kafka, RabbitMQ | 持久化策略、集群模式、消息可靠性 |
| 存儲/文件 | Ceph, GlusterFS, MinIO, Samba/NFS | 分布式一致性、擴展性、POSIX 兼容 |
| 監控/日誌 | Prometheus+Grafana, ELK/EFK, Loki | 指標類型、標簽維度、告警規則、索引優化 |
| 容器編排 | Kubernetes, Docker Swarm, K3s | Pod/Service/Ingress、調度器、CN、CSI、Operator 模式 |
單機優化 → 集群高可用 → 微服務治理 → 雲原生架構 → 服務網格 → Serverless。每層都建立在 Linux 內核特性之上(namespace 隔離、cgroup 限流、VFS 存儲、Netfilter 網絡)。
將內核、中間件、應用、監控、安全、自動化編排為可交付的產品:
這需要全棧能力:內核裁剪、驅動開發、啟動優化、安全合規、自動化部署、生命週期管理。
| 階段 | 30 天目標 | 核心動作 |
|---|---|---|
| 零基礎 | 熟練使用終端、部署 LAMP/LNMP、寫 Shell 腳本自動化備份 | 裝雙系統、每天強制用終端 1 小時 |
| 初級運維 | 獨立搭建高可用集群、排查性能瓶頸、編寫 Ansible 剧本 | 考 RHCSA/RHCE、刷 Linux Journey、做項目 |
| 後端開發 | 理解 epoll/io_uring、掌握容器原理、能寫 eBPF 探針 | 讀《UNIX 環境高級編程》、寫高併發服務 |
| 內核/基礎設施 | 提交內核補丁、開發驅動/文件系統、參與社區維護 | 訂閱 LKML、做 kernelnewbies 練習、找導師 |
Linux 學習沒有終點,只有不斷深入的過程。從「會用命令」到「懂原理」,從「單機運維」到「分布式架構」,從「調用 API」到「改內核代碼」,每一層都在通過親手構建與破壞來完成認知躍遷。選擇一條路,開始動手,堅持下去——這就是最好的學習方法。
GRUB 救援全攻略:從 grub> 提示符到急救模式完美修復開機引導
Linux 下配置 PHP 環境:XAMPP 安裝與使用基礎教程
Linux 系統管理實戰技巧集錦:終端優化、硬碟調校、遠端管理與服務配置
Linux 靜態路由配置詳解:ip route 現代語法與永久化最佳實踐
SUSE Linux BASH 環境下配置 Java 環境變量:從 .profile 到完整變量鏈的實戰避坑
RedHat Linux 網卡邏輯名稱互換 Shell 腳本:eth0 ↔ eth1 自動化重命名
Linux zip/unzip 壓縮解壓實用指令大全:建立、解壓、增刪檔案
Linux 網路管理核心指令大全:ftp、telnet、r 命令、netstat、nslookup、finger、ping