Linux运维进大厂?这份P6+级“捡垃圾”技术清单,值3万月薪
一、Linux 系统内核与性能
进程管理
ps、top、htop、pidstat 查看进程状态
kill、pkill 信号处理(SIGTERM、SIGKILL、SIGHUP)
nice、renice、taskset 调整优先级和CPU亲和性
Cgroup v2:限制进程的CPU、内存、IO(用 cgcreate、cgset 或直接写 /sys/fs/cgroup)
strace 追踪进程系统调用,ltrace 追踪库函数
内存管理
free、vmstat、/proc/meminfo 分析内存使用(区分 buffers/cached)
smem 查看PSS/USS
OOM 机制:oom_score、oom_adj、dmesg 查看 OOM Killer 日志
swap 分区调优(swappiness、vm.vfs_cache_pressure)
磁盘与文件系统
df、du、lsof(找出删除但仍被进程占用的文件)
xfs_info、dumpe2fs 查看文件系统参数
磁盘性能测试:fio、iostat、iotop
RAID 软硬配置(mdadm、/proc/mdstat)
逻辑卷管理(LVM):pvcreate、vgcreate、lvcreate、resize2fs 扩容
系统性能全面排查
综合工具:dstat、nmon、perf top
火焰图生成:使用 perf script + FlameGraph 脚本
eBPF工具链:
内核参数调优:sysctl -a 找到与 net.core, vm.dirty_ratio, kernel.sem 等相关的参数并解释其含义
二、网络协议与排查
TCP/IP核心技术
完整三次握手/四次挥手过程,能通过 tcpdump 抓包看到每个标志位(SYN、ACK、FIN、RST)
拥塞控制算法:reno、cubic、bbr 切换与效果对比(sysctl net.ipv4.tcp_congestion_control)
TCP 参数调优:tcp_tw_reuse、tcp_tw_recycle(注意已废弃)、tcp_fin_timeout、tcp_keepalive_*
网络排查命令
查看连接状态:ss -tunap
测试带宽:iperf3
路由跟踪:traceroute、mtr
DNS 诊断:dig +trace、nslookup、host
HTTP 压测与调试:curl -w、ab、wrk
抓包分析能力
tcpdump 过滤表达式(host、port、tcp[tcpflags]、vlan)
将抓包文件导出用 Wireshark 分析:过滤 http.request、tcp.analysis.retransmission
识别重传、重复 ACK、零窗口、SACK 情况
负载均衡与反向代理
Nginx:
LVS:NAT、DR、TUN 三种模式区别与配置(ipvsadm)
HAProxy:ACL、后端服务器权重动态调整
三、自动化与开发(代码能力)
Shell 编程(生产级)
特殊变量 $?、$@、$#、$$
条件测试 [ -f ]、[[ ]]、&& ||
循环、函数、trap 信号捕获
文本处理三剑客:grep(-E、-P 扩展正则)、sed(增删改查)、awk(按字段统计、关联数组)
并发控制:xargs -P、wait、命名管道
Python(必备语言)
常用模块:os、sys、subprocess、argparse、logging、yaml、json、requests
写一个 200 行以上的运维脚本(例如批量 ssh 执行命令并收集结果)
了解 asyncio 或 concurrent.futures 实现简单并发
Go(加分,趋势)
能编译、运行简单的 Go 程序,理解 goroutine 和 channel
阅读 Kubernetes 或 Prometheus 的 Go 代码片段
配置管理(IaC)
Ansible:
Terraform:
CI/CD流水线
Jenkins:声明式 pipeline(agent、stage、steps、post),集成 Git、Maven、Docker、K8s
GitLabCI:.gitlab-ci.yml 编写,使用 cache、artifacts、only/except、rules
四、容器与编排(K8s 必备)
Docker
Dockerfile 优化:多阶段构建、减少层、使用 .dockerignore
镜像仓库操作:docker login、tag、push、pull
网络模式:bridge、host、none、container、macvlan
存储卷:-v、--mount、volume 驱动(nfs、local)
资源限制:--cpus、--memory、--memory-swap
Kubernetes(重点)
节点 NotReady 原因(kubectl get nodes、kubectl describe node)
Pod 一直 Pending(资源不足、PV 绑定失败、污点容忍)
CrashLoopBackOff(查看日志、事件、kubectl debug)
kubectl get 及常用输出列(-o wide、-o yaml、-o json)
kubectl describe 查看事件
kubectl logs(带 -f、--previous)
kubectl exec 进入容器
kubectl port-forward 用于调试
核心对象:Pod、Deployment、StatefulSet、DaemonSet、Service、Ingress、ConfigMap、Secret、PV/PVC、Namespace
排查命令:
调度与亲和性:nodeSelector、nodeAffinity、podAntiAffinity
网络策略:NetworkPolicy(限制 namespace 内/间访问)
存储:CSI 驱动、动态 PV(StorageClass)
安全:RBAC(Role、RoleBinding、ClusterRole、ClusterRoleBinding)、ServiceAccount
包管理:Helm(chart 结构、values.yaml、模板函数)、Kustomize
高级排查:
Operator:了解 CRD、operator-sdk 基本流程
服务网格(加分)
Istio:安装、注入 sidecar、配置 VirtualService/DestinationRule(权重路由、故障注入)
使用 Kiali 观测调用图
五、可观测性体系
监控与指标
配置 target(静态、基于文件、consul)
PromQL 编写(rate、histogram_quantile、聚合运算)
Alertmanager 配置路由、接收器(钉钉、企业微信、PagerDuty)
Prometheus:
Grafana:创建 dashboard、面板变量、数据源设置、告警
日志系统
Filebeat 或 Fluentd 作为采集器
日志解析:Logstash grok 或 Fluentd regexp
Elasticsearch 索引模板、生命周期管理(ILM)
Kibana 创建 Discover、Visualize 面板
ELK / EFK:
分布式追踪
Jaeger 或 SkyWalking 部署
注入 OpenTelemetry SDK(可以仅做概念实验)
理解 Trace、Span、Baggage
六、数据库与中间件
MySQL
备份恢复:mysqldump、xtrabackup
主从复制(异步/半同步):CHANGE MASTER TO,处理 Slave_IO_Running 故障
慢查询分析:开启 slow_query_log,用 pt-query-digest 分析
高可用:MHA、Orchestrator 或 Group Replication(概念了解)
Redis
数据结构使用场景(string、hash、list、set、zset)
持久化:RDB 和 AOF 配置与恢复
高可用:哨兵模式、Redis Cluster 搭建与扩容
性能排查:INFO 命令、SLOWLOG、redis-benchmark
消息队列
Kafka:主题、分区、副本机制;生产/消费命令行工具(kafka-console-producer、consumer)
理解 ISR 同步机制、offset 提交
七、云计算与成本控制
至少一个云厂商的实战
阿里云:ECS、VPC、SLB、RDS、OSS、ACK
AWS:EC2、VPC、ELB、RDS、S3、EKS
能通过 CLI(aliyuncli / awscli)创建和销毁资源
成本优化技术
预留实例 vs 按需 vs 竞价实例
使用标签分账
云监控:设置账单阈值报警
八、安全加固
九、综合实战能力自检
你可以用以下任务来检验自己:
不用 help 命令,5 分钟内用 tcpdump 抓取访问某端口的所有 SYN 包并保存文件。
手写一个 Ansible role,用于部署一个 nginx 容器(docker 方式),并配置反向代理到后端。
排查过真实的生产环境高 CPU 负载问题,知道先用 top + perf top 再定位到代码行。
在 K8s 集群中,当一个 Pod 无法访问另一个 Service,能通过 dig、curl、tcpdump 在 Pod 内找出问题(DNS 或 网络策略)。
写出 PromQL 查询过去 5 分钟每秒请求增长率,并按接口分组。
使用 Terraform 在云上创建一个 VPC + 子网 + 一台 EC2,并部署一个简单的 Web 服务。