核心要点 (Key Takeaways)
- 别指望课程救你:99% 的 Linux 课程教的是"怎么装系统",而生产环境要的是"怎么在 3 分钟内定位 CPU 飙升的元凶"。选课核心标准是看它教不教
perf、strace、ss这类排查工具。 - RHCSA 是底线,不是天花板:它覆盖了 systemd、SELinux、LVM 这些生产环境绕不开的东西,但深度不够。建议当作基础框架,配合 KodeKloud 的实操场景查漏补缺。
- KodeKloud 的 Linux 路径最接近真实运维:它在 Docker、K8s 场景里嵌入了 Linux 知识点,比干巴巴敲命令强太多。但 Reddit 上也有老哥吐槽它"什么都讲一点,什么都没讲透"。
- 免费资源被严重低估:90DaysOfDevOps 的 GitHub 仓库和 FreeCodeCamp 的实操视频,配合你自己搭的虚拟机,效果不输付费课——前提是你真的会去踩坑。
- 证书是敲门砖,不是免死金牌:我们组去年招了个 RHCE,结果连
journalctl -u查服务日志都要想半天。面试考的是排查思路,不是--help背得溜不溜。
一、问题的根源:为什么你会"卡"在生产环境?
先讲个上周刚发生的破事。我们生产集群一台节点磁盘报警,我登录上去 df -h 一看,/var/lib/docker 占了 92%。正常操作是 docker system prune 清垃圾对吧?结果清了半天,磁盘占用纹丝不动。
最后花了 40 分钟用 du -x --max-depth=2 /var/lib/docker 一层层挖,才发现是某个容器把日志写到了 /var/lib/docker/containers/<id>/*-json.log,那个文件已经膨胀到 47GB。我当时的内心是崩溃的——这破事任何一门 Udemy 入门课都不会教你,因为那些课还在教 ls、cd、mkdir。
这就是问题所在。大多数 DevOps 课程把 Linux 当"前置技能"一笔带过,仿佛你只要会 grep 和 chmod 就能上生产。等你真正面对 load average 23、D 状态进程堆积、TCP TIME_WAIT 连接爆炸 的时候,你会发现脑子里全是浆糊。
Reddit 上有个帖子问"Learning linux for devops - Recommend some courses",高赞回答原话是:"My personal opinion is that for any DevOps training, KodeKloud is the best." 但底下有人跟帖吐槽:“KodeKloud 的 Linux 课我 2 倍速刷完,到了公司发现连 NFS 挂载权限问题都搞不定。” 你看,这就是现实——课程只能给你地图,路还得自己走,而且路上全是坑。
所以这篇文章要解决的,不是"哪个课评分高",而是"当你凌晨 2 点被 on-call 电话吵醒、生产环境血流成河的时候,哪个课教的东西能让你别那么慌"。
二、主流课程横向对比:谁在教真本事,谁在浪费时间
先给结论:如果你只能选一门课,选 KodeKloud 的 Linux 路径;如果你要考证撑门面,选 RHCSA;如果你跟我一样讨厌付费课,白嫖 90DaysOfDevOps 然后自己搭环境折腾。
下面这张表是我结合自己踩坑经验、Reddit/HN 社区反馈、以及课程大纲做的对比。评分标准只有一个:生产环境出问题后,这些知识能不能直接拿来用。
| 课程/路径 | 价格 | 生产实用度 (5分制) | 覆盖的关键生产技能 | 硬伤 | 适合谁 |
|---|---|---|---|---|---|
| RHCSA (Red Hat 官方) | 约 $400 考试费 + 培训费 | 4.0 | systemd、SELinux、LVM、网络配置、NFS 挂载 | 太偏 RHEL 系,Debian/Ubuntu 环境有些水土不服;纯命令行,场景感弱 | 想拿证书、在 RHEL 系企业混的人 |
| KodeKloud (Linux 路径) | 订阅制约 $30/月 | 4.5 | 在 Docker/K8s 场景里学 Linux,涵盖进程、文件系统、网络排查 | 知识点比较碎,缺乏系统性;有些实验环境太"玩具" | 准备考 CKA/CKAD、喜欢动手实操的人 |
| Boot.dev (Linux 相关) | 订阅制约 $29/月 | 3.0 | 偏编程向,Linux 只是辅助内容 | 根本不是专门的 Linux 课,深度严重不足 | 想学 Go/Python 顺便补点 Linux 的人 |
| Udemy 爆款 (如 “Linux for DevOps”) | 经常打折到 $15 | 2.5 | 基本命令、Shell 脚本 | 内容严重同质化,全是 ls/cd 起步;质量参差不齐 | 纯小白,想低成本入门 |
| 90DaysOfDevOps (免费 GitHub) | 免费 | 4.0 | 覆盖 Linux 基础 + CI/CD + 云原生,路线清晰 | 需要极强的自学驱动力,没人逼你学 | 自律性强、不想花钱的人 |
| FreeCodeCamp (YouTube) | 免费 | 3.5 | Linux 基础 + 系统管理实战演示 | 视频较长,缺乏互动性;内容偏老 | 喜欢看视频学习、预算为零的人 |
我的私货结论:KodeKloud 和 RHCSA 不是二选一,而是互补关系。RHCSA 给你一个完整的知识框架(尤其是 SELinux 和 systemd 这两个生产环境绕不开的坑),KodeKloud 给你实战场景感。但真正让你在 production 不慌的,是下面第三节讲的排查方法论——那是任何课程都教不会、只能靠踩坑攒出来的东西。
三、生产环境高频故障的实战排查手册(这才是核心)
我不打算再重复 top、df -h、ps aux 这些烂大街的命令。我要讲的是——当你发现这些基础命令不够用的时候,该用什么。
3.1 CPU 飙升:别再只会 top 了
top 只能告诉你哪个进程在烧 CPU,但为什么烧,你得用 perf 或者至少 strace 去挖。
上周排查一个 Java 服务 CPU 打满的问题,top 显示 PID 是 23456,但重启后过 10 分钟又飙到 100%。最后用 perf top -p 23456 一看,热区全在 GC 相关的 native 方法里——原来是 JVM 堆内存设置太小,导致频繁 Full GC。
# 第一步:找到 CPU 占用最高的进程
top -b -n 1 | head -20
# 第二步:看这个进程在干什么(如果系统调用频繁,说明是 IO 或锁问题)
strace -cp $PID
# 第三步:如果 strace 没看出名堂,上 perf 看内核/用户态热区
perf top -p $PID
# 第四步:对于 Java/Go 这类运行时,还要看 goroutine/线程栈
kill -3 $PID # Java 打印线程 dump
关键教训:top 告诉你"谁在烧",perf 和 strace 告诉你"为什么烧"。后者才是解决问题的钥匙。
3.2 磁盘写满:df -h 显示有空间,但应用报错 “No space left”
这是我最喜欢拿来面试别人的陷阱题。df -h 显示 / 还有 20GB 可用,但应用就是报 ENOSPC。原因通常是 inode 耗尽。
# 查看 inode 使用率
df -i
# 找到哪个目录塞满了小文件
for i in /*; do echo $i; find $i -type f 2>/dev/null | wc -l; done
# 经典罪魁祸首:/var/spool/postfix/maildrop 或 Docker 容器内的临时文件
另一个隐蔽原因:删除了文件但进程还持有句柄。df -h 显示空间没释放?用这个:
lsof | grep deleted
然后 kill 掉那个进程,空间才会真正释放。这个坑我踩过不止三次——每次都是删了日志文件,但 tail -f 还在跑,文件句柄一直占着。
3.3 网络排查:ping 不通不等于网络不通
生产环境最让人抓狂的就是网络问题。ping 不通,第一反应是"网断了",但很多时候只是 ICMP 被防火墙拦了,TCP 流量完全正常。
真正的排查顺序应该是:
# 1. 先确认端口通不通(这才是业务关心的)
ss -tunlp | grep 8080 # 本机端口监听状态
telnet $REMOTE_HOST 8080 # 从另一台机器测
# 2. 如果 telnet 超时,可能是防火墙或安全组
nc -zv $REMOTE_HOST 8080
# 3. 确认 TCP 连接状态,看是不是有大量 TIME_WAIT
ss -s
# 4. 如果连接数爆炸,用这个看具体是哪个端口
ss -tan | awk '{print $4}' | sort | uniq -c | sort -nr | head
血泪教训:有一次我们新上的服务在测试环境好好的,一上生产就超时。ping 通、telnet 也通,但请求就是慢。最后用 tcpdump -i eth0 port 8080 抓包才发现——MTU 设置不一致导致 TCP 分片丢失。这玩意儿,任何一门 Linux 课都不会教你,但生产环境三天两头出。
3.4 僵尸进程和 D 状态进程
ps aux 看到一堆 Z 状态(僵尸)进程,不用太慌——它们不占 CPU 和内存,只要父进程 wait() 就能回收。真正要警惕的是 D 状态(不可中断睡眠),这通常意味着进程在等 IO,而 IO 卡死了。
# 统计僵尸进程数
ps aux | awk '$8=="Z"'
# 查看 D 状态进程在等什么 IO(这是内核层面的信息)
cat /proc/$PID/stack # 需要 root
D 状态进程堆积通常意味着 存储子系统出问题了——比如 NFS 挂载点失联、云盘 IO 超时。这时候你 kill -9 都没用,只能等内核超时或重启节点。
四、选课策略:别当"刷课机器",要当"故障猎人"
说句难听的,大多数课程的问题不是内容错,而是太"干净"了。真实的生产环境到处都是脏数据、奇怪的配置、历史遗留的垃圾——没有任何课程能模拟这种混乱。
所以我的建议是:
- 用 RHCSA 大纲当知识地图。不需要真去考试,但它的知识点列表(systemd、LVM、SELinux、网络配置)就是生产运维的"最低配"。
- 用 KodeKloud 的场景实验练手。特别是它的 Docker 和 K8s 集成场景,能让你理解 Linux 在容器世界里的角色。
- 自己搭一个 “垃圾环境”。拿一台旧机器或者云主机,故意搞坏它——比如删掉
/etc/fstab里的挂载项、把 SELinux 强制模式打开然后跑一个需要放行的服务、写个脚本把 inode 耗尽——然后自己想办法修。这个过程产生的学习效果,是任何课程都替代不了的。
Reddit 上那个帖子我也翻过,"This is How You Learn Linux for DevOps" 的作者列了 10 个必学领域,第一条就是 Process Management:“When your application crashes, consumes too much CPU…"。我举双手双脚赞成。课程列表只是入口,真正的学习发生在你被生产环境按在地上摩擦的过程中。
最后说一句关于免费资源的题外话。90DaysOfDevOps 这个 GitHub 仓库(github.com/MichaelCade/90DaysOfDevOps)是我见过最良心的免费路线图。它不完美,但胜在全面——从 Linux 到 CI/CD 到云原生全给你串起来了。但免费的东西最大的成本是时间,如果你缺乏自律,那还是花钱买个带社区的课吧——至少有人逼你学。
五、FAQ
Q1: Which Linux should I learn for DevOps?
A: 如果你在 AWS/Azure 上跑,Ubuntu (Debian 系) 是绝对主流,容器镜像也大多是它。如果你在传统企业(银行、国企)混,RHEL/CentOS (红帽系) 才是标配。建议:以 Ubuntu 为主,但必须掌握 systemd 和 SELinux 的概念——因为云原生世界里 systemd 是通用的,而 SELinux 在 RHEL 系里绕不开。千万别只学一种发行版,生产环境永远比你想象的更杂。
Q2: Can I learn DevOps in 3 months?
A: 能,但前提是你说的"DevOps"指的是"会用 Docker/K8s 部署服务 + 写基本 CI/CD pipeline”。3 个月足够你从零到能干活。但如果你想达到"生产环境出问题不慌"的水平,3 个月远远不够——那是至少 1-2 年踩坑才能换来的。别信那些 “30 天成为 DevOps 工程师” 的广告,那都是骗你去买课的。
Q3: Is it necessary to learn Linux for DevOps?
A: 没有商量余地,必须学。K8s 的节点是 Linux、Docker 是 Linux 容器技术、CI/CD 的 Runner 跑在 Linux 上、生产服务器的 90% 以上是 Linux。你不会 Linux,等于 DevOps 少了一条腿。连 KodeKloud 的课程都默认你有 Linux 基础。别想着跳过——我见过太多只会点鼠标的"DevOps",遇到问题就抓瞎,最后被生产环境教做人。
Q4: How can I learn Linux for DevOps?
A: 我的推荐路线:(1)用 RHCSA 的考试大纲当学习清单,一个个知识点过;(2)配 KodeKloud 的 Linux 路径做实操;(3)最重要的一步——自己搭服务器,跑真实应用,然后故意搞坏它再修好。比如部署一个 Nginx + 后端服务,然后模拟磁盘写满、CPU 飙高、网络抖动,用 strace、perf、ss 这些工具去排查。只有亲手踩过坑,你才能在生产环境保持冷静。
六、References & Community Insights
- 90DaysOfDevOps GitHub 仓库: https://github.com/MichaelCade/90DaysOfDevOps — 免费的 DevOps 学习路径,Linux 部分讲得比较扎实,社区维护活跃。
- Reddit r/devops 讨论帖 “Learning linux for devops-Recommend some courses”: https://www.reddit.com/r/devops/comments/learning_linux_for_devops_recommend_some_courses/ — 我写这篇文章时参考的核心社区讨论,里面有大量一线工程师的真实推荐和吐槽。
- KodeKloud 官方 Linux 课程路径: https://learn.kodekloud.com/ — 它的 Linux 基础课是我见过最接近真实运维场景的付费课程,特别适合配合 CKA/CKAD 备考。
- Red Hat RHCSA 认证官方页面: https://www.redhat.com/en/services/training-and-certification/rhcsa-red-hat-certified-system-administrator — 考试大纲本身就是一份完美的生产 Linux 知识点清单,哪怕不考试也值得当参考。
- Medium 文章 “This is How You Learn Linux for DevOps”: https://medium.com/@akhileshmishra/this-is-how-you-learn-linux-for-devops — 列出了 10 个生产环境必备的 Linux 技能领域,跟我自己的踩坑经验高度吻合。
