你是否曾在这些场景中感到无力?
面对突然飙高的 CPU 使用率,除了重启服务,不知道如何精准定位到问题线程;
磁盘空间告急,却找不到是哪些大文件在“偷偷”占用,也不敢随意删除;
网络延迟飙升,ping 和 traceroute 查不出所以然,问题在深夜依然无解……
Linux 的世界里,命令数以千计,但真正区分高手与普通用户的,往往不是知道多少生僻指令,而是能否用高效、优雅、系统化的方式解决实际问题。本文融合十年运维经验与系统化思维,精选 150 个核心操作,覆盖从日常巡检到深度排查,从工具使用到思维构建的全过程。这不是命令的简单堆砌,而是一套让你效率翻倍、思维进阶的实战体系。
真正的监控不是看几个数字,而是理解其背后的关联。
🔵进程资源实时排序与洞察
# 实时按CPU使用率排序(替代top的静态视图)ps aux --sort=-%cpu | head -15# 实时按内存使用率排序,发现“内存黑洞”ps aux --sort=-%mem | head -15# 综合监控仪表盘(轻量级htop替代品)# Debian/Ubuntu 系统sudo apt update && sudo apt install -y glances# CentOS/RHEL 系统(需先启用 EPEL 源)sudo yum install -y epel-release && sudo yum install -y glances# 通用 pip 安装(适用于所有支持 pip 的系统)pip install --upgrade pip && pip install glances
🔵系统瓶颈快速诊断工具箱
# 一眼看清负载:1、5、15分钟负载及登录用户w# 监控磁盘I/O详情与延迟(%util > 80%即瓶颈)iostat -x 1# 查看内存详情:区分Used、Cache、Buffers# 通用写法:显示内存详情(含 buff/cache 汇总,兼容所有系统)free -h# 若系统支持(procps-ng ≥3.3.15),可加 -w 拆分 buff 和 cache 显示# free -h -w# 监控所有TCP/UDP连接状态(比netstat快数倍)ss -tunap# 追踪进程系统调用,按耗时统计排序,定位异常行为strace -p [PID] -c -S time
当告警响起,你需要的是手术刀般的精确。
🔵CPU高负载元凶追踪
# 查看每个CPU核心的独立使用率mpstat -P ALL 1# 定位进程内哪个线程最耗CPUtop -H -p [PID]# 生成CPU火焰图(性能分析终极武器)# 1. 捕获进程性能数据(原文命令正确,保留)perf record -F 99 -p [PID] -g -- sleep 30perf script > out.perf# 2. 安装 FlamesGraph 工具(从 GitHub 克隆)git clone https://github.com/brendangregg/FlameGraph.git# 3. 转换数据格式并生成 SVG 火焰图./FlameGraph/stackcollapse-perf.pl out.perf > out.folded # 折叠调用栈./FlameGraph/flamegraph.pl out.folded > cpu_flamegraph.svg # 生成可视化图
🔵内存泄漏与使用分析
# 查看进程详细内存映射pmap -x [PID]# 监控内存分配趋势(每秒1次,共10次)sar -r 1 10# 检查内核slab内存使用(内核对象缓存)slabtop -o# 监控内存换页(si/so持续>0表明内存不足)# 1. 若命令不存在,先安装依赖包# Debian/Ubuntu 系统sudo apt install -y procps# CentOS/RHEL 系统sudo yum install -y procps-ng# 2. 监控内存换页(si/so 持续>0 表明内存不足)vmstat 1 5
告别笨拙的`rm -rf`和低效的手动查找。
🔵高级查找与批量处理
# 查找大日志并立即压缩(一条命令完成)find /var/log -name "*.log" -size +10M -exec gzip {} \;# 查找最近1小时被修改的配置文件(排查篡改)find /etc -type f -mmin -60# 安全删除旧临时文件(-print先确认再删除)find /tmp -type f -mtime +7 -print -delete
🔵磁盘空间可视化精细管理
# 交互式查看目录大小(比du直观)# 1. 安装 ncdu 工具# Debian/Ubuntu 系统sudo apt install -y ncdu# CentOS/RHEL 系统(需先启用 EPEL 源)sudo yum install -y epel-release && sudo yum install -y ncdu# 2. 交互式查看目录大小(比 du 直观)ncdu /home# 找出系统前10大文件find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head -10# 基于内容哈希查找并删除重复文件# 1. 安装 fdupes 工具(根据系统选择)# Debian/Ubuntu 系统sudo apt install -y fdupes# CentOS/RHEL 系统(需先启用 EPEL 源)sudo yum install -y epel-release && sudo yum install -y fdupes# 2. 基于内容哈希查找并删除重复文件(-r 递归目录,-d 交互式删除)fdupes -r /data# 若需自动保留第一个文件并删除其余重复文件,可加 -dN 参数# fdupes -r -dN /data# 实时监控目录大小变化watch -n 1 'du -sh /var/log'
掌握这些,你才是存储的真正主人。
🔵LVM实战:扩容、快照与拓扑
# 查看LVM完整逻辑视图lvdisplay -v && pvdisplay -v && vgdisplay -v# 在线扩展逻辑卷(业务不中断)lvextend -L +20G /dev/vg_data/lv_appresize2fs /dev/vg_data/lv_app # 适用于ext3/ext4xfs_growfs /mount/point # 适用于XFS# 创建瞬间快照用于备份或测试lvcreate -L 5G -s -n db_snapshot /dev/vg_data/lv_database
🔵文件系统健康与性能诊断
# 只读模式检查ext4文件系统错误e2fsck -n /dev/sda1# 查看文件系统特性(是否支持加密、压缩等)tune2fs -l /dev/sda1 | grep -E "Filesystem|features"# 测试磁盘实际读写性能hdparm -Tt /dev/sda# 查看inode使用情况(解决“磁盘未满却无法创建文件”)df -i
🔵高效压缩与传输
# 排除node_modules等目录进行智能压缩tar -czvf backup.tar.gz --exclude=node_modules /home/project/# 大文件分卷压缩(适配各种上传限制)split -b 100M large_file.tar.gz large_file_part_# 合并分卷并解压(- 表示从标准输入读取数据)cat large_file_part_* | tar -xzvf -# 带进度条的可靠复制(优于scp/cp)rsync -ah --progress /source/ user@remote:/destination/
🔵完整性保障
# 计算并验证SHA256哈希,确保文件无损sha256sum ubuntu.iso > ubuntu.sha256sha256sum -c ubuntu.sha256 # 输出OK即表示完整
网络问题,首先要看清全貌。
🔵连接全景与实时监控
# 统计各TCP状态数量(定位TIME_WAIT堆积)ss -tan | awk '{print $1}' | sort | uniq -c# 查看已建立连接的详细信息(含进程)ss -tanp state established# 实时监控连接数变化watch -n 1 'ss -tan state established | wc -l'# 快速定位占用特定端口的进程ss -tulnp | grep :80
🔵带宽、延迟与路由追踪
# Debian/Ubuntu 系统sudo apt install -y iperf3# CentOS/RHEL 系统sudo yum install -y iperf3# 安装后执行服务端(目标服务器)iperf3 -s# 客户端执行测试(本地或其他服务器)iperf3 -c target_server -t 30 -i 5# 双向带宽测试(需在服务端启动iperf3 -s)iperf3 -c target_server -t 30 -i 5# 测量HTTP请求全链路耗时curl -o /dev/null -s -w "HTTP状态: %{http_code}, 总耗时: %{time_total}s\n" https://example.com# 动态路由追踪,显示每跳丢包率与延迟mtr --report github.com
当标准日志无法告诉你真相时。
🔵精准抓包与协议分析
# 捕获HTTP GET请求头(不抓包体,保护隐私)tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'# 简单实时HTTP流量显示# 1. 安装 tcpflow(实时HTTP流量显示)# Debian/Ubuntu 系统sudo apt install -y tcpflow# CentOS/RHEL 系统sudo yum install -y tcpflow# 执行流量显示(实时打印HTTP流量)tcpflow -c -i eth0 port 80# 分析已抓取的pcap文件,提取关键信息# 安装 tshark(pcap文件分析,依赖wireshark命令行工具)# Debian/Ubuntu 系统sudo apt install -y wireshark-cli# CentOS/RHEL 系统sudo yum install -y wireshark# 分析pcap文件tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
🔵高级网络配置
# 设置Jumbo Frame提升内网传输效率ip link set eth0 mtu 9000# 添加虚拟IP(VIP)用于高可用ip addr add 192.168.1.100/24 dev eth0 label eth0:0# 刷新ARP缓存,解决IP冲突后遗症ip neigh flush dev eth0# 查看详细路由表(含多表)ip route show table all
🔵防火墙与连接跟踪
# 查看iptables规则及命中计数iptables -L -n -v# 查看NAT连接跟踪表# 1. 安装 conntrack 工具(根据系统选择)# Debian/Ubuntu 系统sudo apt install -y conntrack# CentOS/RHEL 系统sudo yum install -y conntrack-tools# 2. 查看 NAT 连接跟踪表conntrack -L# 临时关闭TCP Timestamps优化高并发(需权衡)sysctl -w net.ipv4.tcp_timestamps=0
安全始于清晰的资产和权限认知。
🔵账户安全深度审计
# 排查所有具有root权限(UID=0)的账户awk -F: '($3 == 0) {print $1}' /etc/passwd# 发现空密码或未加密密码账户awk -F: '($2 == "" || $2 == "!") {print $1}' /etc/shadow# 查看所有具有sudo权限的用户grep -v "^#" /etc/sudoers | grep "ALL=(ALL)"或getent group sudo | cut -d: -f4 | tr ',' '\n'
🔵登录行为监控
# 统计SSH暴力破解源IP Top 20# Debian/Ubuntu 系统grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -20# CentOS/RHEL 系统grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | head -20# 查看最近登录记录(排除当前会话)last -n 50 | grep -v "still logged in"# 禁用root直接SSH登录(生产环境必备)sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_configsystemctl restart sshd
🔵权限风险扫描
# 查找危险的SUID/SGID文件find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; 2>/dev/null# 查找无粘滞位的全局可写目录find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print# 检查系统重要文件完整性(RHEL/CentOS)rpm -V coreutils shadow-utils
🔵实时入侵检测
# 监控关键文件(如/etc/passwd)的写入和属性变更auditctl -w /etc/passwd -p wa -k passwd_change# 查询相关审计日志# 安装并启动 auditd(审计日志查询依赖)# Debian/Ubuntu 系统sudo apt install -y auditd && sudo systemctl start auditd && sudo systemctl enable auditd# CentOS/RHEL 系统sudo yum install -y auditd && sudo systemctl start auditd && sudo systemctl enable auditd# 查询审计日志ausearch -k passwd_change# 查找无关联终端的异常进程ps aux | awk '$7 == "?" {print $0}'
🔵容器资源与生命周期管理
# 查看容器资源占用(CPU/内存排序)docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k2 -hr# 优雅停止容器(给予应用清理时间)docker stop -t 30 container_name# 深度清理无用镜像、容器、卷docker system prune -a -f --volumes# 备份容器数据卷到宿主机docker run --rm -v app-data:/source -v $(pwd):/backup alpine tar -czvf /backup/backup.tar.gz -C /source .
🔵容器网络诊断
# 进入容器的网络命名空间进行诊断nsenter -t $(docker inspect -f '{{.State.Pid}}' container_name) -n ip addr# 跨容器网络连通性测试docker exec -it container1 ping container2
🔵Pod与节点问题排查
# 按时间排序查看集群事件kubectl get events --sort-by='.lastTimestamp' --all-namespaces# 进入Pod内特定容器进行调试kubectl exec -it pod_name -c container_name -- /bin/bash# 查看节点资源分配与预留详情kubectl describe node node_name | grep -A 10 -B 5 "Allocated resources"# 查看Pod资源使用量(需安装metrics-server)kubectl top pod -n namespace
🔵实时日志处理与监控
# 同时追踪多个日志文件tail -f /var/log/nginx/access.log /var/log/nginx/error.log# 高亮显示关键错误(ERROR/WARN/CRITICAL)tail -f app.log | grep --color=auto -E "ERROR|WARN|CRITICAL"# 实时解析JSON格式日志,提取关键字段# 安装 jq 工具(解析JSON日志依赖)# Debian/Ubuntu 系统sudo apt install -y jq# CentOS/RHEL 系统(需启用 EPEL 源)sudo yum install -y epel-release && sudo yum install -y jq# 2. 实时解析JSON格式日志,提取关键字段tail -f app.log | jq -c '{time: .timestamp, level: .level, msg: .message}'
🔵结构化日志深度分析
# 从Nginx日志提取所有404请求(IP和URL)awk '$9 == 404 {print $1, $7}' /var/log/nginx/access.log# 按小时统计请求量awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c# 统计各HTTP状态码出现次数awk '{count[$9]++} END {for(code in count) print code, count[code]}' access.log
🔵AWK高级模式
# 多条件过滤并计算总和awk '$3 > 100 && $4 ~ /ERROR/ {sum+=$5} END {print "Total:", sum}' log.txt# 字段去重计数(经典用法)awk '{count[$2]++} END {for(item in count) print item, count[item]}' data.txt# 范围模式处理(提取两个标记间的所有行)awk '/START_PATTERN/,/END_PATTERN/ {print NR ": " $0}' file.txt
🔵Sed复杂文本操作
# 原地替换并备份原文件sed -i.bak 's/old_domain.com/new_domain.com/g' /path/to/file# 仅对包含特定模式的行进行替换sed '/pattern_to_match/ s/foo/bar/g' file.txt# 跨目录批量替换(find + sed组合,-r避免空结果报错)find /etc -type f -exec grep -l "old_string" {} \; | xargs -r sed -i 's/old_string/new_string/g'
🔵高效备份与验证
# 使用硬链接实现增量备份,节省空间rsync -av --link-dest=/backup/last_full/ /data/ /backup/$(date +%Y%m%d)/# MySQL全库备份并压缩# MySQL全库备份并压缩(安全写法:避免明文密码)# 方式1:交互输入密码(推荐,无历史记录风险)mysqldump -u root -p --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz# 执行后按提示输入密码(-p后无空格)# 方式2:配置文件免密(适合自动化脚本,需限制文件权限)# 1. 创建配置文件 ~/.my.cnf,设置权限600# cat > ~/.my.cnf << EOF# [mysqldump]# user=root# password=your_password# EOF# chmod 600 ~/.my.cnf# 2. 执行备份(无需输入密码)# mysqldump --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz# 备份后强制校验,防止静默损坏md5sum /backup/backup.tar.gz > /backup/backup.tar.gz.md5md5sum -c /backup/backup.tar.gz.md5
🔵批量操作与定时任务管理
# 遍历所有用户,检查其crontab(排查后门)for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done# 在多台服务器上批量执行命令(需提前配置SSH免密)for host in $(cat host_list.txt); do ssh $host "uptime"; done# 生成高强度随机密码(用于自动化脚本)openssl rand -hex 16
🔵简易监控脚本示例
# 基础系统健康检查脚本#!/bin/bashecho "===== 系统健康检查报告 $(date) ====="echo "1. 系统负载: $(uptime | awk -F'load average:' '{print $2}')"echo "2. 内存使用: $(free -h | awk '/Mem:/ {print $3"/"$2}')"echo "3. 根分区可用: $(df -h / | awk 'NR==2 {print $4}')"echo "4. 已建立TCP连接: $(ss -tan state established | wc -l)"
超越命令:构建你的运维思维体系
这150个操作不是让你死记硬背的清单,而是为你搭建系统思维体系的砖瓦。真正的Linux大师与初学者的本质区别在于:
三级思维跃迁
1. 从被动反应到主动预见
🔵初学者:磁盘满了才去清理。
🔵进阶者:设置 `cron` 任务定期清理日志。
🔵大师:部署监控,在磁盘使用率达70%时提前告警,并自动分析大文件来源。
2. 从单点解决到系统思考
🔵初学者:看到CPU高就重启进程。
🔵进阶者:用 `top` 找到进程,用 `strace` 追踪系统调用。
🔵大师:分析是CPU密集型、IO等待、锁竞争,还是上游服务调用链导致,并从架构层面提出优化方案。
3. 从机械执行到理解原理
🔵 初学者:照搬 `ss -tan` 命令。
🔵进阶者:知道 `ss` 比 `netstat` 快是因为它直接从内核TCP栈读取信息。
🔵大师:能解释TCP状态机迁移,理解 `TIME_WAIT` 存在的意义及如何合理调整 `tcp_max_tw_buckets`。
构建你的知识体系:运维“剧本”
🔵日常巡检剧本:`w`(负载)→ `free -h`(内存)→ `df -h`(磁盘)→ `ss -s`(连接摘要)→ 检查关键服务状态。🔵故障排查剧本:明确现象 → 检查相关服务日志 (`journalctl -u service -f`) → 查看系统资源状态 (`htop`, `iostat`) → 分析进程行为 (`strace`, `lsof`) → 验证网络连通性与延迟 (`mtr`, `nc`)。
🔵性能优化剧本:确定性能指标 → 进行基准测试 (`ab`, `iperf3`) → 使用专业工具定位瓶颈 (`perf`, `vmstat`) → 调整内核/应用参数 → 验证优化效果。
终极建议:从操作者到设计者
当你熟练运用这些工具后,下一步是创造工具和设计流程。
将重复性的操作脚本化,将关键的检查流程自动化,将宝贵的经验文档化。真正的专业,是在正确的场景选择最合适的工具,并用最优雅的方式组合它们,最终形成可传承的运维体系。
命令是有限的,但组合的智慧是无穷的。当你开始用“连接”与“体系”的视角看待Linux世界时,你便不再是一个被问题追逐的运维人员,而是成为驾驭系统的设计师。这150个核心操作,就是你构建这座能力大厦最坚实的基石。现在,打开终端,开始你的实践吧。
