2026 年做 Linux 运维,不等于“会敲几条命令”就够用了。服务端还是那套 Linux,但上面跑的已经变成容器、微服务、监控告警、自动化交付;招聘要求也从“熟不熟悉命令”变成“能不能独立处理一台会出各种故障的服务器”。这次直接给一份从零基础到进阶的 Linux 运维学习路径,从环境准备、基础命令、服务部署、自动化、容器化,到故障排查,按顺序拆开讲。
如果你是刚入行的新人,或者已经在做桌面运维、网络运维但想往服务器运维方向转,这篇文章核心解决一个问题:2026 年做 Linux 运维到底要学什么、按什么顺序学、用什么工具验证自己学会了。文末还会给一套适合日常练习和面试前自查的方法,把零散的知识点串成能落地的能力。
1. Linux 运维核心能力速览
先把 Linux 运维工程师需要覆盖的能力范围列出来。下面这张表不是某个课程大纲,而是从实际工作内容反推出来的技能清单:
| 能力项 | 具体内容 | 学习优先级 |
|---|---|---|
| 操作系统基础 | Linux 发行版差异、文件系统、进程管理、内核基础概念 | 极高 |
| 基础命令 | 文件操作、文本处理、权限管理、磁盘管理、网络命令 | 极高 |
| Shell 脚本 | 变量、循环、条件判断、sed/awk 文本处理、定时任务 | 极高 |
| 服务部署 | Nginx、MySQL、Redis、Keepalived、日志服务等 | 高 |
| 用户与权限 | 用户管理、sudo、ACL、PAM 认证 | 高 |
| 网络基础 | TCP/IP、DNS、HTTP、防火墙配置、负载均衡概念 | 高 |
| 自动化运维 | Ansible、Shell 脚本、CI/CD 基础流程 | 高 |
| 容器化 | Docker 常用操作、镜像构建、docker-compose | 高 |
| 容器编排 | Kubernetes 核心概念、Pod 调度、常用资源对象 | 中高 |
| 监控与告警 | Zabbix、Prometheus、Grafana、告警规则 | 中高 |
| 故障排查 | 系统日志分析、性能分析工具、网络抓包思路 | 极高 |
| 安全加固 | SSH 安全、防火墙策略、系统补丁、最小权限原则 | 中高 |
从这张表可以看出,2026 年的运维已经不是靠一两个命令就能解决的岗位,而是要求你从“系统层 -> 服务层 -> 调度层 -> 监控层”形成一条完整的技术链路。后面所有章节都按这个链路展开。
2. 适用场景与学习路线
2.1 这套学习路径适合谁
- 零基础转行:之前没接触过服务器,想进入运维行业,需要先把基础命令和系统管理过一遍。
- 桌面运维/网络运维转岗:会装系统、会处理网络问题,但对 Linux 服务端部署和自动化不熟悉,需要补齐服务端能力。
- 开发人员补课:日常写代码但需要自己部署环境,理解 Linux 操作能减少“在我电脑上可以运行”这类问题。
- 面试前系统复习:已经有碎片经验,但缺少体系化梳理,可以通过这套路径自查盲区。
2.2 不建议的情况
- 如果只打算背命令应付选择题,不接触真实服务器,这套路径帮助有限。
- 如果完全没耐心做实验,只看视频、不敲命令,看完基本等于没看。Linux 运维是动手学科,不练不会。
2.3 推荐学习顺序
先本地搭环境,再学基础命令,接着部署服务,然后写脚本做自动化,最后进入容器和 Kubernetes。具体顺序如下:
- 安装一个 Linux 虚拟机或云服务器,用 SSH 登录。
- 学文件、用户、权限、进程、磁盘、网络六类基础命令。
- 手动部署 Nginx + MySQL + Redis,理解服务运行原理。
- 写 Shell 脚本替代重复操作,用 crontab 做定时任务。
- 用 Ansible 批量管理多台机器。
- 学习 Docker 和 docker-compose。
- 了解 Kubernetes 核心对象,部署一套最小集群。
- 接入 Prometheus + Grafana,完成监控告警闭环。
3. Linux 学习环境准备
这一步的目标是:给自己准备一台可以随意折腾的 Linux 环境。折腾坏了不影响工作机,这是学习 Linux 最重要的前提。
3.1 环境选择建议
| 环境类型 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|
| 虚拟机(VMware/VirtualBox) | 免费、快照方便、随时重置 | 依赖本机性能 | 绝大多数初学者 |
| Windows 自带 WSL | 启动快、和 Windows 文件互通 | 和真实服务器网络行为有差异 | 想快速体验命令行的人 |
| 云服务器 | 公网可达、真实生产场景 | 需要费用 | 想练服务部署、面试加分 |
| 物理机安装 | 性能最好 | 折腾成本高 | 有闲置机器的人 |
从学习角度看,虚拟机是性价比最高的选择。装完系统后拍一个快照,后面配置坏了直接回滚,不用重装。
3.2 系统选型
学习建议选 Ubuntu 或 CentOS 系列,理由很实际:
- Ubuntu 的资料多、软件包更新快、社区活跃,遇到报错基本都能搜到。
- CentOS Stream / Rocky Linux / AlmaLinux 更接近传统服务器环境,企业存量系统使用多。
- 国产系统如统信 UOS、麒麟在政企项目中常见,它们的命令行操作逻辑同样基于 Linux,学完通用知识后可以再单独适配。
不建议刚开始就在 run 一个特别小众的发行版,学习成本会翻倍。
3.3 虚拟机安装要点
虚拟机创建时注意几个关键设置,别一路默认到底:
- 内存建议分配 4GB 以上,如果要跑容器和 Kubernetes,建议 8GB。
- CPU 给 2 核以上。
- 磁盘给 40GB 以上,后面装 Docker 镜像和日志文件会比较占空间。
- 网络选“NAT 模式”,保证虚拟机可以访问外网,宿主机也能连上虚拟机。如果想练集群通信,后面再改用桥接模式或自建虚拟网络。
安装完成后,进入系统先做一次更新:
sudo apt update && sudo apt upgrade -y如果你使用的是 CentOS/Rocky 系列,对应的是:
sudo dnf update -y国内服务器建议把软件源换成国内镜像,速度提升非常明显。以 Ubuntu 为例:
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo apt update这一步做不做,直接影响后续每次装软件的速度。
3.4 SSH 连接配置
学习阶段建议直接用 SSH 登录虚拟机,这样你可以完全不依赖虚拟机窗口,习惯真实服务器操作方式。
先在虚拟机上安装 SSH 服务:
sudo apt install -y openssh-server sudo systemctl enable --now ssh然后在宿主机用终端连接。Windows 可以直接用自带的“终端”或 PowerShell:
ssh 用户名@虚拟机IP查看虚拟机 IP:
ip addr show从学习第一天开始用 SSH 操作,后续切到真实服务器不会有任何陌生感。
4. 基础命令学习:从文件到系统管理
不要一上来就背几百条命令,那不现实也没必要。工作中高频使用的命令大概一百条左右,先掌握核心六类,后续用到再查再记。
4.1 文件与目录操作
这是使用频率最高的一类命令。重点不是记住所有参数,而是能快速完成任务:
# 查找文件 find /var/log -name "*.log" -mtime -7 # 查看文件大小分布 du -sh /var/log/* | sort -rh | head -10 # 文本搜索 grep -rn "ERROR" /opt/app/ | head -20 # 文本处理 cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10 # 查看文件内容 tail -f /var/log/syslog学习建议:不要单独背ls、cd这种命令,而是要在一个真实任务中组合使用。比如“统计某个目录下日志文件的行数”“找出最近一周被修改过的配置文件”,这些任务会让你把find、grep、awk、sort、uniq串起来用。
4.2 用户与权限管理
生产环境中用户权限管理直接决定安全性,这部分是面试常考重点。
# 创建用户并加入 sudo 组 sudo useradd -m -s /bin/bash devops sudo usermod -aG sudo devops # 设置密码和过期策略 sudo passwd devops sudo chage -M 90 devops # 查看用户信息 id devops cat /etc/passwd | grep devops必须理解 Linux 权限模型:rwx分别代表读、写、执行;u/g/o/a代表属主、属组、其他用户、全部范围。工作中的一个高频需求是“让多个运维同事都有权限查看日志,但只有一部分人能执行重启命令”,这就需要结合组权限、ACL 和 sudo 规则来实现。
4.3 进程与系统资源
排查系统性能问题,看进程是第一步:
# 查看实时进程 top -c # 查看 CPU 占用最高的 10 个进程 ps aux --sort=-%cpu | head -11 # 查看端口占用 ss -tlnp | grep 8080 # 查看系统负载 uptime # 查看内存 free -h要学会读/proc目录。它是 Linux 系统的运行时信息窗口,很多监控数据的底层来源就是/proc。
4.4 磁盘管理
磁盘满是最常见的故障之一,学习阶段就要养成检查磁盘的习惯:
# 查看文件系统使用率 df -h # 查看磁盘 I/O iostat -x 1 # 查看大目录 du -sh /*# 定位大文件 find / -type f -size +1G -exec ls -lh {} \;遇到“磁盘满了但删不掉文件”的情况,要想到是进程占用了已删除的文件句柄:
lsof | grep deleted这类问题在真实服务器上很常见,面试问“磁盘空间满了怎么排查”基本都会往这个方向考。
4.5 网络命令
网络是运维面试必问方向:
# 查看网络连接 ss -tn state established | awk '{print $4}' | sort | uniq -c # DNS 解析测试 dig example.com # 路由检查 ip route # 发送 HTTP 请求测试 curl -I https://example.com学习重点不是记住全部命令,而是知道当服务访问不通时,用什么命令逐步定位问题。排查链路从底到顶是:网卡状态 -> IP 连通性 -> DNS 解析 -> TCP 端口 -> 应用服务状态,每一层对应一个排查命令,这个思路比命令本身重要得多。
4.6 系统服务管理
现代服务器上 systemd 已经成为标准,这部分不会基本没法工作:
# 服务管理 sudo systemctl enable --now nginx sudo systemctl status nginx # 查看服务日志 journalctl -u nginx -f # 查看启动失败的单元 systemctl --failed # 查看开机启动项 systemctl list-unit-files --state=enabled学习 systemd 时,不仅要会用命令,还要能写简单的 service 单元文件。自编写一个启动脚本服务,能帮你理解“服务是怎么被管理的”。
5. 服务部署:从单台机器到系统化运维
学会了基础命令,下一步就是用真实服务练手。这个阶段目标很直接:在一台干净机器上,手动部署一套 Web 服务 + 数据库 + 缓存,并保证重启后服务能自动恢复。
5.1 Web 服务部署
以 Nginx 为例,安装之后做两个动作:改配置、看日志。
sudo apt install -y nginx # 配置一个反向代理 sudo vim /etc/nginx/sites-available/demo # 检查配置 sudo nginx -t # 重载配置 sudo systemctl reload nginx练习时至少要理解这几个概念:虚拟主机、反向代理、负载均衡、动静分离。不需要一步到位实现所有功能,但要把流量从“访问 Nginx -> 转发到后端服务 -> 返回页面”这条链路跑通。
5.2 数据库部署
数据库安装并不难,难在初始化、备份和慢查询排查。练习 MySQL 时建议完成以下清单:
- 安装 MySQL 并设置 root 密码。
- 创建业务库和专用用户,只授予必要权限。
- 配置定时备份任务。
- 手动模拟一次数据误删,通过备份恢复。
- 查看慢查询日志,分析一条性能差的 SQL。
常用命令示例:
# 登录和查看数据库 mysql -u root -p show databases; show processlist; # 备份与恢复 mysqldump -u root -p demo_db > /backup/demo_db_$(date +%F).sql mysql -u root -p demo_db < /backup/demo_db_backup.sql定时备份用 crontab 实现:
0 2 * * * mysqldump -u root -p密码 demo_db | gzip > /backup/demo_$(date +\%F).sql.gz注意%在 crontab 中需要转义,写成\%F。这个细节第一次接触很容易踩坑。
5.3 定时任务与日志处理
crontab 是运维的基本功。把“每天凌晨备份”“每 5 分钟做一次健康检查”“每天切割日志”这类需求写进 crontab,能有效提升日常效率。
# 编辑 crontab crontab -e # 每 5 分钟执行健康检查脚本 */5 * * * * /opt/scripts/health_check.sh >> /var/log/health_check.log 2>&1 # 每天凌晨 2 点压缩日志 0 2 * * * gzip /var/log/nginx/access.log.1日志处理要注意:服务不会自动切割日志,需要自己配置 logrotate 或者用脚本定期归档,否则日志文件会无限增长占满磁盘。
6. 自动化运维:从手工到脚本化
当机器数量变多,手动敲命令就不可持续了。自动化是运维工程师区别于“只会敲命令的人”的核心技能。
6.1 Shell 脚本
Shell 是运维第一语言,不要求写得多复杂,但要能快速把重复操作变成脚本。
#!/bin/bash # 简单服务器健康检查脚本 SERVERS="192.168.1.10 192.168.1.11 192.168.1.12" for ip in $SERVERS; do if ping -c 1 -W 1 "$ip" > /dev/null 2>&1; then echo "$ip is up" else echo "$ip is down" # 发送告警,例如调用钉钉/飞书 webhook # curl -X POST -H "Content-Type: application/json" \ # -d "{\"msg\":\"$ip down\"}" http://webhook地址 fi done学习 Shell 的关键不是背语法,而是学会“把手工操作一步步翻译成脚本”。可以先在命令行手工执行一遍,确认没有错误后再写入脚本。
6.2 文本处理三剑客
grep、sed、awk是 Linux 运维处理日志最重要的三个工具。日志分析是面试的高频现场编程题。
# 统计 Nginx 访问最多的 IP awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10 # 找出 5xx 状态码的请求 grep 'HTTP/1.1" 5[0-9][0-9]' /var/log/nginx/access.log | awk '{print $1, $6, $7, $9}' | head -20 # 用 sed 批量替换配置文件 sed -i 's/old_server_name/new_server_name/g' /etc/nginx/nginx.conf这三条命令单独看都不难,但组合起来的威力很大。建议每天用真实日志做一次分析练习,比如“统计最近一小时的 404 请求”“按状态码统计请求量”等。
6.3 Ansible 批量管理
手动管理一百台服务器不现实,Ansible 是目前企业使用最广的运维工具之一,而且不需要在被管理机器上装客户端。
# 安装 Ansible sudo apt install -y ansible # 配置 inventory cat <<EOF > /etc/ansible/hosts [webservers] 192.168.1.10 192.168.1.11 [dbservers] 192.168.1.20 EOF # 测试连通性 ansible webservers -m ping # 批量执行命令 ansible webservers -m command -a "uptime" # 批量安装软件包 ansible webservers -m apt -a "name=nginx state=present" -bAnsible 学习路径建议从三个模块开始:command、file、service。用这三个模块完成“批量创建用户”“批量部署 Nginx 配置”“批量重启服务”三个练习,基本就掌握日常用法了。
6.4 CI/CD 基础流程
现代运维即使不专职做 DevOps,也需要理解 CI/CD 的基本流程。把“代码提交 -> 构建 -> 测试 -> 部署”这条链路打通,是运维能力从“手工部署”到“平台化部署”的分界线。可以从一个简单的 Jenkins 或 GitLab CI 实例开始,部署一个小型 Java 或 Python 应用到目标服务器,理解构建产物如何交付到服务器上。
7. 容器化与云原生运维
2026 年,容器和 Kubernetes 已经是运维面试绕不开的话题。这部分不做要求?不行,即使你的岗位不直接操作容器集群,容器化的思维方式已经渗透到所有服务部署中。
7.1 Docker 基础
Docker 学习重点是:镜像构建、容器生命周期、数据卷、网络模式。
# 拉取镜像 docker pull nginx:stable # 启动一个容器并挂载目录 docker run -d --name web1 -p 8080:80 -v /opt/www:/usr/share/nginx/html nginx:stable # 查看日志 docker logs -f --tail 100 web1 # 进入容器排查 docker exec -it web1 bash # 清理无用资源 docker system prune -a写Dockerfile是基础能力:
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple COPY app.py . EXPOSE 8000 CMD ["python", "app.py"]国内拉取镜像经常遇到网络问题,需要配置镜像加速器,或者在拉取公共镜像时选择带有国内镜像源参数的构建方式。容器虽然轻量,但不可随意使用,需要在构建时多利用缓存、精简层级和减小体积。
7.2 Docker Compose
多容器应用用 docker-compose 管理比一个个docker run方便得多:
version: "3" services: web: image: nginx:stable ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html restart: always redis: image: redis:7 ports: - "6379:6379" restart: alwaysdocker compose up -d docker compose ps docker compose logs -f7.3 Kubernetes 核心概念
Kubernetes 内容很多,一开始不要照抄复杂架构,先把核心对象学会:Pod、Deployment、Service、ConfigMap、Namespace。
建议学习顺序是:
- 理解为什么需要 Pod,而不是直接操作容器。
- 用 Deployment 管理 Pod 副本和滚动更新。
- 用 Service 暴露服务。
- 用 ConfigMap 管理不同环境的配置。
- 用 Namespace 做资源隔离。
部署一个最小应用示例:
kubectl create deployment nginx --image=nginx:stable kubectl expose deployment nginx --type=NodePort --port=80 kubectl get pods -o wide如果本机资源有限,学习 Kubernetes 可以先用单节点版本(如 k3s、minikube 或轻量化工具)跑通流程,再扩展到多节点。
运维的云原生方向还包括:了解应用如何通过探针实现健康检查、如何配置资源请求与限制、如何查看 Pod 事件和日志。这些是面试高频题,也是工作中处理容器应用故障的基本功。
8. 日常故障排查与性能优化
故障排查能力是区分运维新手和熟手的重要标准。Linux 出问题时,很多情况下不是立刻知道答案,而是需要一套稳定的排查思路。
8.1 故障排查方法论
推荐按这个顺序定位问题:
- 确认故障范围:只有一台机器挂了还是多台机器都挂了,是网络问题还是应用问题。
- 看系统状态:用
uptime看负载,用top -c看 CPU 和内存,用df -h看磁盘。 - 看日志:系统日志
/var/log/syslog、消息日志、应用日志journalctl -u 服务名。 - 看网络连接:
ss -tlnp看端口监听,curl验证服务是否可用。 - 最小化复现:能用一条命令复现的问题,比模糊的问题更容易定位。
8.2 高频故障处理
| 问题现象 | 可能原因 | 排查命令 | 解决思路 |
|---|---|---|---|
| 服务无法启动 | 端口被占用、配置文件错误 | ss -tlnp、nginx -t | 释放端口或改配置后再启动 |
| 系统负载飙高 | CPU 密集型进程或频繁磁盘读写 | top -c、iostat -x 1 | 找到具体进程,定位到脚本或应用逻辑 |
| 磁盘空间满 | 日志文件或临时文件占用 | df -h、du -sh /* | 清理日志、归档大目录、配置 logrotate |
| 内存不足 OOM | 应用内存泄漏或配置过大 | free -h、`dmesg | grep -i oom` |
| 网络连接超时 | 防火墙、DNS、后端服务不可达 | ping、dig、curl -v | 按链路逐层排查 |
| 端口无法连接 | 防火墙规则没放行 | iptables -L、firewall-cmd --state | 放行对应端口或调整服务监听地址 |
# 查看 OOM killer 日志 dmesg | grep -i "out of memory" | tail -20 # 查看进程实时线程状态 top -Hp $(pidof java) # 抓包分析 HTTP 请求是否到达 sudo tcpdump -i eth0 port 80 -nn8.3 性能优化思路
性能优化不是一开始就调参数,而是先找到瓶颈。不要盲目调内核参数,先确认瓶颈在哪一层。数据库慢、Nginx 连接数不够、带宽受限、锁竞争和磁盘 IO 忙是常见瓶颈,优化方向各不相同。可以把 Prometheus 和 Grafana 接入测试环境,用数据驱动优化决策。
常用系统调整思路:
- 文件描述符限制:
ulimit -n设置过低会导致大量连接被拒绝。 - TCP 连接优化:修改内核参数,如
net.ipv4.tcp_tw_reuse、net.ipv4.ip_local_port_range。 - 关闭不必要的服务:减少系统资源浪费。
- 配置 swap:防止物理内存满直接 OOM,但依赖 swap 会拖慢数据库性能。
# 查看当前文件描述符限制 ulimit -n # 修改内核参数 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -p9. 最佳实践与工程规范
技术能力之外,运维工程师还要有一套规范化的操作习惯。这部分决定你在生产环境敢不敢放手去做。
9.1 操作规范
- 生产环境修改文件前先备份,备份文件带时间戳。
- 使用
systemctl reload而不是systemctl restart修改配置文件时,能少中断服务就少中断。 - 磁盘操作前确认设备名,用
lsblk查看盘符,避免误格式化。 - 批量操作先在一台机器上验证,再放量执行。
9.2 安全与合规
- 禁止使用 root 直接远程登录,使用普通用户 + sudo 模式。
- SSH 端口不建议用默认 22,生产环境建议同时配置密钥登录并禁用密码登录,尤其是暴露在公网的服务器。
- 服务器必须配置防火墙,只放行业务需要的端口。
- 定时更新安全补丁,但更新前先在测试环境验证兼容性。
- 涉及用户数据、数据库备份的机器,必须重视访问控制,备份文件不能放到公网可读目录。
- 人脸、声音、个人隐私相关数据采集和处理,必须明确授权;日志脱敏、数据加密、最小化收集这些原则要从一开始就遵守。
# 修改 SSH 配置的关键安全项 sudo vim /etc/ssh/sshd_config # 禁止 root 登录 PermitRootLogin no # 允许密钥登录,禁止密码登录 PasswordAuthentication no改完重启 SSH 服务前,建议新开一个终端测试是否能正常登录,避免把自己锁在服务器外面。
9.3 备份与恢复
备份是运维的生命线。核心原则是每天备份、异地保存、定时演练恢复。
| 备份对象 | 备份方式 | 保存策略 |
|---|---|---|
| 数据库 | mysqldump / 物理备份 | 每天全备,保留 7 天 |
| 配置文件 | git 或 rsync 到备份机 | 每次变更前备份 |
| 应用代码 | 代码仓库管理,构建产物归档 | 按版本保留 |
| 系统状态 | 虚拟机快照 / 镜像 | 重大变更前快照 |
9.4 文档习惯
运维工程师写文档很重要。每次变更记录需要包含变更原因、变更操作、回滚方案、验证结果。最简单的方式是维护一个CHANGELOG,或者直接把变更记录写在时间命名的 Markdown 文件里,不要只凭脑子记。
10. 总结与下一步
回到这整套学习路径,最值得先动手做的是:在一台虚拟机里完整部署一次 Nginx + MySQL + Redis,并让系统重启后服务自动恢复。这个流程覆盖了 Linux 基础命令、权限、systemd、网络、磁盘、备份、日志等 80% 的基础能力,做完之后你就可以说“我能管理一台 Linux 服务器了”。
最容易踩的坑有三个:
- 照抄博客命令但不理解含义,遇到小版本差异就懵。
- 只在电脑上看视频,不敲命令,看的时候会,实操全忘了。
- 一次学太多主题,命令没记住就开始学 Kubernetes,最后什么都没学透。
下一步如果还想继续深入,建议按两条线走:一是横向扩展,学会多台机器批量化操作和自动化工具;二是纵向深入,理解 Linux 内核资源管理、系统调优和网络协议,能从底层解释为什么会出现某个问题。
如果这篇文章帮你理清了路线,建议收藏备用,需要的时候翻出来对照一下,看看自己学到哪一步了。
后面我也会继续整理具体的 Linux 命令详解、Shell 脚本练习和 Kubernetes 部署实战,欢迎持续关注。