Linux运维自学路线怎么走?从命令到排障的实操顺序
装完第一台Linux虚拟机的那一刻通常挺兴奋,敲几个命令看输出,觉得自己入门了。真正卡住人的是第二步:面对一台连不上网的服务器,不知道从哪查。日志在哪个目录、服务为什么起不来、端口到底通没通,全靠猜。零基础学运维,难点不在命令数量,在没人告诉你先练什么、后练什么,以及在什么环境里练才算数。
先把命令练到能盲敲,再谈脚本
命令这一关没有捷径。cd、ls、cp、mv、rm、cat、less、grep、find、ps、top、kill,这些是每天都要碰的。我的建议是不要背参数表,直接在真机里练场景:把/var/log下的日志按时间筛出来、把某个进程按名字找出来再杀掉、把一个大目录按大小排序。
练到什么程度算过关?不用看man手册能写出带管道和重定向的组合命令。比如统计nginx访问日志里访问量最高的前十个IP,这条命令写不出来,说明文本处理还没过关。awk和sed不用精通,但得能看懂别人写的。
这个阶段大概花两到三周,每天两小时。用虚拟机上练就行,本地VirtualBox装个Ubuntu 22.04,或者RHEL 9,成本为零。
vim和systemd是分水岭,绕不过去
很多人卡在vim上,改个配置文件要折腾十分钟。这事没有替代方案,vi/vim是服务器上的默认编辑器,nano不一定装了。先掌握i、Esc、:wq、dd、yy、/搜索这六个操作,够用很久。
systemd是另一个分水岭。服务起不来的时候,systemctl status看状态、journalctl -u看日志,这两条命令决定了你能不能自己排障。按我的经验,能把一个自写的Python脚本做成systemd服务并设置开机自启,运维的基本功就算立住了。
练到这一步,你需要的就不是本地虚拟机了。本地机器关了就没了,练不出真实网络环境下的问题。一台低配的独立服务器月付一两百块,能长期挂着练,比反复重装虚拟机省时间。像 香港大带宽服务器 I 这种 E5-2630L*2 / 32G 配置,跑几个容器、搭套LNMP、练防火墙规则都够,香港机房延迟低,SSH操作不卡顿。
网络和服务排障,是真正拉开差距的地方
命令和脚本谁都能学会,排障能力才是面试和实际工作的分水岭。下面这几类问题,能自己定位的运维和只会重启的运维,薪资差一档。
- 服务起不来:先看systemctl status的错误码,再看journalctl -u的具体报错,最后查配置文件语法。
- 连不上:按ping、telnet端口、curl、tcpdump的顺序逐层排查,不要一上来就重启。
- 磁盘满:df -h看分区,du -sh逐层找大文件,注意被删除但被进程占用的文件。
- 负载高:top看CPU,iostat看磁盘IO,free看内存,三者要分开判断。
这些技能只能在真实故障里练。自己搭一套LNMP,然后故意把配置改错、把磁盘写满、把端口占掉,再自己修回来。这种自虐式练习比看视频有效得多。
排障还依赖日志。日志集中管理是绕不开的,起步用rsyslog把日志汇总到一台机器上就够,不用急着上ELK,那套东西资源吃得多,练的时候容易本末倒置。
Shell脚本写到能交付,才算自学完成
脚本不是炫技,是解决重复劳动。备份、日志清理、服务健康检查、批量改配置,这四类脚本能独立写出来,日常运维就够用了。
判断脚本写得好不好,看三点:出错会不会停、有没有日志、能不能重复执行。缺少任何一点,脚本在真机上跑都会出问题。比如备份脚本没做失败判断,磁盘满了还在写,最后把源数据覆盖了,这种事故我见过不少。
学到这个程度,整个周期大概三个月。想加速的话,把练习环境从本地搬到长期在线的服务器上,每天都能SSH进去折腾,手感不容易断。
给一个可执行的收尾建议:前两周只练命令,第三到五周啃vim和systemd,第六到九周专门练排障,第十周开始写脚本。预算方面,本地虚拟机零成本,加一台入门独立服务器月付几百块,比报班便宜得多。如果你目标是进运维岗,别花时间考一堆证,把一台服务器从裸机搭到能跑业务、能排故障,简历上比证书管用。纯粹想了解Linux的,本地虚拟机足够,不用花钱租服务器。