--help。环境准备(第 0 步):本地虚拟机(VirtualBox/VMware + Ubuntu 22.04 / CentOS 7+)做「随便折腾」的实验场;公有云免费试用开一台按量 2C4G;装好 Docker;配套 Xshell/MobaXterm、SSH 密钥、Git、VS Code + Remote-SSH。
按「先单机、再网络、后服务、最后容器化上云」递进。建议每天 2~3 小时。
| 阶段 | 核心目标 | 关键技能 | 练成标准 |
|---|---|---|---|
| ① 基础奠基 1~2 周 |
克服命令行恐惧,会操作 Linux | 系统安装、文件/用户/权限、Vim、grep/sed/awk | 能独立完成文件管理、文本查找、权限修改 |
| ② 网络与服务 3~4 周 |
理解数据如何流动,独立部署企业级服务 | OSI/TCP-IP、IP/子网、DNS、SSH、防火墙、抓包;磁盘/LVM、Nginx、MySQL、性能排查 | 能部署 LNMP;能说清三次握手、URL 访问流程;会用 top/ss/lsof 定位问题 |
| ③ 容器化与云平台 3~4 周 |
用 Docker 容器化应用并迁移上云 | Docker(镜像/容器/网络/卷/Dockerfile/Compose)、Shell 脚本、监控、备份、云主机/安全组/VPC | 能写 Dockerfile 容器化应用;能用 Compose 编排多服务;能上云部署可访问、可监控的服务 |
点击展开每个模块:核心概念 → 必会命令 → 实操要点。
/etc 配置、/var 日志数据、/home、/root、/tmp、/dev、/proc、/usr、/boot 职责必须烂熟。/etc/passwd、/etc/shadow、useradd/usermod/passwd、sudoers。| 类别 | 命令 | 作用 |
|---|---|---|
| 文件 | ls -lh / cp / mv / find / du -sh | 列表、复制、移动、查找、统计大小 |
| 内容 | cat / less / head / tail -f / grep -iC | 查看与实时追踪日志,grep -C 看上下文 |
| 三剑客 | grep / sed -i 's/old/new/g' / awk -F':' '{print $1}' | 过滤、替换、按列提取(面试高频) |
| 权限 | chmod / chown / umask | 权限与属主管理 |
| 磁盘 | df -h / du -sh / lsblk | 使用率、大文件、块设备 |
| 进程 | ps aux / top / htop / kill | 查杀进程(kill -9 仅卡死时用) |
| 网络 | ping / curl / ss -tulnp / lsof -i | 连通性、端口(见网络模块) |
| 系统 | uptime / free -h / vmstat / iostat / dmesg | 负载、内存、IO 排查 |
| 软件 | apt / systemctl status / journalctl -xe | 包、服务、日志 |
top 找高 CPU 进程 → ps aux | grep → strace -p;%id 持续 <10% 即 CPU 瓶颈。free -h 看 available(非 free),available 含可回收缓存更接近真实。iostat -x 1 看 %util、iotop 找高 IO 进程。df -h 定位 → du -sh * 找大文件;df 满但 du 很小 = 文件被删但进程仍占用句柄,lsof | grep deleted 找到后重启进程释放。ss -tulnp | grep :80(推荐)→ 拿 PID → kill。tcp_tw_reuse、tcp_fin_timeout、somaxconn;启用 keep-alive 复用连接。/24 = 255.255.255.0;私有段 10/8、172.16/12、192.168/16;NAT 让内网共享公网 IP。| 层 | 排查命令 | 判断 |
|---|---|---|
| 链路层 | ip link / ethtool eth0 | 网卡是否 UP、物理连通 |
| 网络层 | ip addr / ip route / ping | IP 与路由、网关是否正确 |
| 传输层 | ss / nc / telnet 端口 | 端口是否监听、连通性 |
| DNS/安全 | dig / resolv.conf / 安全组 | 解析是否正确、是否被拦截 |
| 概念 | 说明 |
|---|---|
| 域 (Domain) vs OU | 域是安全/管理边界;OU 是域内容器,用于组策略与委派 |
| Group Policy (GPO) | 集中配置 OS/应用/用户策略,应用到 OU/域/站点 |
| Kerberos / LDAP | Kerberos 为 AD 提供强认证(票据);LDAP 查询/修改目录 |
| DC / 林 (Forest) | DC 存 AD 数据库响应认证;林为最高组织单位,域内默认双向信任 |
| FSMO / SYSVOL | 五大角色(Schema/Domain Naming/RID/PDC/Infrastructure);SYSVOL 存 GPO 与登录脚本 |
./test.sh(子进程,需 x 权限)、bash test.sh(无需 x)、source test.sh(当前进程,环境变量生效,配置脚本必用)。#!/bin/bash
# 磁盘使用率超阈值告警(自动化巡检模板)
set -euo pipefail
THRESHOLD=80
usage=$(df -P / | awk 'NR==2{gsub("%","",$5); print $5}')
if [ "$usage" -ge "$THRESHOLD" ]; then
echo "磁盘使用率 ${usage}%,请检查"
fi
0 3 * * * /opt/backup.sh;注意 PATH 与绝对路径。# 规范 Nginx 镜像 Dockerfile
FROM nginx:1.25-alpine # 小体积基础镜像
WORKDIR /usr/share/nginx/html
COPY . . # 拷贝静态资源
EXPOSE 80
ENV TZ=Asia/Shanghai
CMD ["nginx", "-g", "daemon off;"]
| 类别 | 命令 | 作用 |
|---|---|---|
| 运行 | docker run -itd -p 8080:80 --name web -v /data:/data nginx | 后台运行 + 端口映射 + 命名 + 挂载卷 |
| 生命周期 | start / stop / restart / rm / pause / kill | 启停与删除(rm 前需 stop) |
| 查看 | ps / ps -a / inspect / logs -f | 运行/全部容器、详情、实时日志 |
| 镜像 | images / pull / push / build -t v1.0 . / rmi | 拉取、构建、推送、删除 |
| 进入 | exec -it web /bin/bash | 进入运行中容器排障(exec 最常用) |
| 资源 | stats / top / system df | 实时占用、清理悬空资源 |
up -d / ps / logs -f / down 一键编排;depends_on 控顺序、volume 持久化、restart: always 故障自启。| 现象 | 排查思路 |
|---|---|
| 启动立即退出(Exited) | docker logs 看报错;CMD 前台进程是否退出;docker run 前台跑调试 |
| 镜像体积过大 | 合并 RUN 层、清包缓存、.dockerignore、多阶段构建 |
| 容器无法外网/互联 | 查网络模式、自定义 bridge、iptables 与 ip_forward |
| 数据丢失 | 确认是否用 volume/bind mount、挂载路径与权限 |
| 端口被占 | ss -lntp 查占用进程,或换映射端口 |
| 产品族 | 代表服务 | 运维关注点 |
|---|---|---|
| 计算 | ECS / CVM / EC2 | 规格、镜像、密钥、弹性伸缩(AS)、停机/迁移 |
| 网络 | VPC / 子网 / SLB / NAT / 专线 | 网段规划、路由、安全组、跨可用区互通 |
| 存储 | OSS / COS / S3 / 云盘 | 桶权限、生命周期、快照、备份 |
| 数据库 | RDS / Redis | 实例规格、备份策略、主从/读写分离、慢查询 |
| 容器 | ACK / TKE / 镜像仓库 | 集群节点、工作负载、镜像托管、CI/CD |
| 安全 | 安全组 / WAF / 云防火墙 / DDoS | 最小权限、漏洞扫描、密钥管理 |
| 数据库 | 运维高频考点 |
|---|---|
| MySQL | 主从复制(binlog/relay log)、备份(mysqldump/XtraBackup)、索引(B+树)、慢查询、忘记 root 密码重置 |
| Redis | 持久化 RDB vs AOF、Sentinel/Cluster、内存淘汰策略、缓存穿透/雪崩 |
| 消息队列 | Kafka/RabbitMQ 架构、高可用、消息不丢失 |
在下方在线实验终端逐条执行。终端以 ops 用户运行(sudo 免密 root 权限)、Docker 可直接使用;
实验目录 /lab:目录内可自由创建 / 删除 / 改权限,目录外删除与改权限会被拦截,重启/关机命令全局禁止。
样例日志在 /lab/access.log,可放心试错。
whoami # ops(拥有 sudo 免密 root 权限,可测 Docker)
sudo -n whoami # sudo 免密 → root
whoami # 仍回到 ops(与 root 分离,不干扰服务器)
docker ps # Docker 已就绪
ls /lab # 实验目录,内含样例日志 access.log
rm /lab/access.log # ✅ 实验目录内:允许删除
rm /tmp/x # ⛔ 目录外:拦截
chmod 777 /lab/access.log # ✅ 目录内:允许改权限
chmod 777 /tmp/x # ⛔ 目录外:拦截
reboot # ⛔ 重启类:全局禁止
mkdir -p /lab/ops-dir && cd /lab/ops-dir
touch a.txt b.txt && ls -lh
cp a.txt c.txt && mv c.txt d.txt && ls
chmod 755 a.txt && ls -l a.txt # -rwxr-xr-x
chmod 644 b.txt && ls -l b.txt # -rw-r--r--
ln -s a.txt link_a && ls -l link_a # 软链接 -> a.txt
find /lab -name "*.txt"
du -sh /lab
grep -c " 200 " /lab/access.log # 200 响应次数
grep -i "post" /lab/access.log # 含 POST 的行
sed -n '1,3p' /lab/access.log # 打印 1~3 行
awk '{print $1}' /lab/access.log | sort | uniq -c | sort -nr | head -n 10
# ↑ 访问量 TOP10 的 IP(面试手写高频)
awk '{print $6}' /lab/access.log | sort | uniq -c # 统计请求方法
ps aux --sort=-%cpu | head -n 8 # 按 CPU 排序
top -bn1 | head -n 12 # 负载/CPU/内存概况
free -h # 内存(看 available)
df -h # 磁盘使用率
vmstat 1 3 # IO/上下文切换
ss -tulnp | head # 监听端口
lsof -i :80 # 谁在占用 80 端口
ping -c 3 learning.sxktyun.cn # 网络层连通
curl -I https://learning.sxktyun.cn # 应用层可达
curl -o /dev/null -s -w 'dns:%{time_namelookup} connect:%{time_connect} total:%{time_total}\n' https://learning.sxktyun.cn
dig learning.sxktyun.cn +short # DNS 解析
nc -zv 127.0.0.1 80 # 传输层端口测试
ss -lntp | grep :80 # 本机端口监听确认
cat > /lab/diskcheck.sh <<'EOF'
#!/bin/bash
# 磁盘使用率巡检
THRESHOLD=80
usage=$(df -P / | awk 'NR==2{gsub("%","",$5); print $5}')
if [ "$usage" -ge "$THRESHOLD" ]; then
echo "磁盘使用率 ${usage}%,请检查"
else
echo "磁盘使用率 ${usage}%,正常"
fi
EOF
bash /lab/diskcheck.sh # 无需 x 权限直接跑
chmod +x /lab/diskcheck.sh # 加可执行权限
/lab/diskcheck.sh # ./ 方式执行
awk '{print $1}' /lab/access.log | sort | uniq -c | sort -nr | head -n 5 # TOP5 来源 IP
awk '$9>=500' /lab/access.log | wc -l # 5xx 错误次数
grep '"POST' /lab/access.log | awk '{print $1, $6, $9}' # 异常 POST 请求明细
awk '{print $4}' /lab/access.log | cut -d: -f2 | sort | uniq -c | sort -nr # 按小时统计访问量
输入用户名 ops 与访问密码即可进入(密码见管理员通知)。
终端规则:① 实验目录 /lab 内可自由创建/删除/改权限(含管道、脚本);② /lab 之外禁止删除与改权限(rm/chmod/chown/dd/find -delete 等被拦截);③ 重启/关机命令全局禁止;④ Docker 可直接使用(ops 已在 docker 组),需要 root 权限时用 sudo(免密)。
进入实验终端 →
实验目录与安全规则:终端内一切删除/改权限操作仅限 /lab 目录(目录内可随意创建文件、目录、脚本并删除、改权限);目录外删除(rm/dd/find -delete 等)与改权限(chmod/chown/chgrp)会被拦截;重启/关机类命令(reboot/shutdown/systemctl poweroff 等)任何位置都禁止;Docker 已预装(含国内镜像加速),可做镜像、容器、Dockerfile、Compose 实验;K8S 集群体验请前往「K8S 实验室」。
每题给「一句话要点」,面试时结合自己的实操场景展开,别死背。
Q:运维的核心职责?2026 年的核心能力要求?
A:基础设施部署/监控/维护、故障排查与应急响应、运维自动化标准化、数据备份与容灾,保障 SLA。能力分层:基础层(Linux/网络/数据库) + 工具层(Docker/Shell/云) + 思维层(自动化、高可用、成本)。
Q:你理解的运维自动化是什么?
A:把重复、易错、人工的操作用脚本/工具固化:日志清理、批量部署、健康检查、备份。演进:手工 → Shell/Python → 配置管理 → CI/CD → IaC → AIOps。
Q:数据备份的核心原则与策略?
A:3-2-1(3 副本、2 介质、1 异地);全量(恢复快占空间)+ 增量(只备份变化,依赖链长)+ 差异(相对全量,恢复居中)。
Q:如何查看 CPU / 内存 / 磁盘使用率?
A:CPU:top(%us/%sy,%id 持续<10% 即瓶颈)、mpstat;内存:free -h 看 available(非 free)、vmstat 1 5;磁盘:df -h(Use%>85% 处理)、du -sh *。
Q:系统负载很高(load > CPU 核数)怎么排查?
A:uptime/top 确认 → 区分类型:CPU 高(top %us/%sy)、内存低(free)、IO 高(iostat %util、iotop);dmesg | tail、journalctl -xe 看硬件/系统错误。切忌上来就重启。
Q:软/硬链接区别?chmod 755/644 含义?
A:硬链接共用 inode、删原文件仍可用、不能跨分区;软链接独立 inode、跨分区、原文件删则失效。755=属主 rwx+属组 rx+其他 rx;644=属主 rw+其余 r。
Q:磁盘 df 100% 但 du 很小?
A:文件被删但进程仍占用句柄;lsof | grep deleted 找到进程,重启/重载释放。
Q:查看/释放某个端口?find 与 grep 区别?
A:ss -tulnp / lsof -i:80 → PID → kill -15(优雅)/-9(卡死)。find 按属性(名/大小/时间)查,grep 按内容匹配。
Q:每天凌晨 3 点备份?
A:crontab -e 添加 0 3 * * * /opt/backup.sh,注意绝对路径与 PATH。
Q:TCP 三次握手 / 四次挥手?为什么三次、挥手四次?
A:握手 SYN→SYN+ACK→ACK,确认双方收发能力、同步序列号;两次握手受历史连接干扰。挥手因全双工需双方各自 FIN,TIME_WAIT 等 2MSL。
Q:输入 URL 到页面展示发生了什么?
A:DNS → TCP 三次握手(HTTPS 加 TLS) → 发 HTTP 请求 → 反向代理 → 应用处理 → 响应渲染 → 四次挥手。
Q:网站打不开但进程正常,怎么排查?(必考场景题)
A:先定范围(单用户/全站) → DNS(dig) → 链路(ip link) → IP/路由(ip addr/route) → 端口(ss/nc) → 防火墙/安全组 → 抓包(tcpdump) → 应用/代理日志。
Q:负载均衡 L4 vs L7?HTTP 状态码?HTTPS 原理?
A:L4(传输层,LVS)基于 IP+端口;L7(应用层,Nginx)按 URL/域名/头部。策略:轮询、权重、IP 哈希、最少连接。200/301/302/403/404/500/502/503/504。HTTPS=TLS 非对称交换密钥+对称加密传输。
Q:统计 Nginx 日志 TOP10 IP?
A:awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
Q:单引号、双引号、反引号区别?
A:单引号所见即所得不解析;双引号解析变量与命令;反引号/`$(...)` 命令替换。
Q:脚本开机自启、后台持久运行?
A:systemd .service(推荐)、rc.local、crontab @reboot;nohup cmd &、screen/tmux(断线重连)、写成服务。
Q:Docker 与虚拟机区别?镜像分层原理?
A:容器共享内核、秒启、轻量、隔离弱;VM 带完整 OS、分钟级、隔离强。镜像从 base 逐层叠加只读,容器在最上层加可写层(CoW),改容器不影响镜像。
Q:CMD 与 ENTRYPOINT 区别?
A:CMD 可被 docker run 后参数覆盖(默认参数);ENTRYPOINT 不可覆盖(固定启动命令);配合可做「带默认参数的可执行镜像」。
Q:如何写 Dockerfile、如何优化镜像体积?
A:FROM 小体积(alpine) → WORKDIR → COPY → RUN 装依赖 → EXPOSE → CMD。优化:合并 RUN、清缓存、.dockerignore、多阶段构建、单进程。
Q:数据持久化?Volume 与 Bind Mount 区别?
A:Volume 由 Docker 管理、独立于容器生命周期,适合数据库;Bind Mount 挂宿主机目录,适合配置/日志/热更新;都通过 -v / --mount。
Q:网络模式?docker run -p 8080:80 什么意思?
A:Bridge/Host/None/Container;同自定义 bridge 下容器按名称互通。-p 8080:80 = 宿主机 8080 → 容器 80,外网访问宿主机 8080 即到容器服务。
Q:容器启动立刻退出(Exited)?镜像很大/磁盘满?
A:docker logs 看报错、CMD 前台进程是否退出、前台跑调试。docker system df 看占用、system prune 清理悬空镜像/停止容器/无用卷。
Q:什么是 VPC?安全组作用?AD 中域/OU/GPO/Kerberos?
A:VPC 是云上隔离虚拟网络(自定义网段/子网/路由);安全组是实例级防火墙(方向/协议/端口/源 IP)。域是认证/管理边界;OU 组织对象应用 GPO;GPO 集中下发配置;Kerberos 基于票据做强认证。
Q:服务器被入侵怎么办?如何防 SSH 暴力破解?
A:发现→遏制(隔离/封 IP)→排查(登录/进程/连接/计划任务/启动项)→清理→改密/补丁/回滚快照→复盘。SSH 加固:禁 root、密钥认证、改端口、fail2ban、限来源 IP、强密码。
Q:遇到过最严重的线上故障?(压轴场景题)
A:用 STAR 法(背景→任务→行动→结果),讲清「怎么发现(监控)、怎么定位(分层排查)、怎么解决、怎么复盘(根因+避免措施)」;没有真实经历就自己搭环境制造故障再修复。
| 周次 | 主攻内容 | 产出 |
|---|---|---|
| 1~2 | Linux 基础命令、Vim、权限、用户 | 能熟练操作终端,整理命令笔记 |
| 3~4 | 网络基础、SSH、防火墙、抓包 | 会配静态 IP,讲清三次握手 |
| 5~6 | 磁盘、服务(Nginx/MySQL)、cron、性能排查 | LNMP 站点上线 + 巡检脚本 |
| 7~8 | Docker:命令、Dockerfile、镜像优化、数据卷、网络 | 能手写 Dockerfile 容器化应用 |
| 9 | Compose 编排 + Shell/Python 自动化 + 监控搭建 | Compose 一键拉起 Web+DB,配告警 |
| 10 | 云平台部署 + 刷题 + 项目复盘 + 简历 + 模拟面试 | 形成可讲的故障排查故事 |
通关标准:能独立完成「部署一个可访问、可监控、可备份、可回滚」的容器化业务系统,并把一次故障排查讲清楚 —— 你就具备了初级公有云运维的核心竞争力。