Skip to content

概念卡片:Linux运维命令与排障

一句话机制:运维命令是「查状态 → 定位瓶颈 → 对症处理」三板斧的工具箱——top/uptime 看 CPU 与负载、ps 看进程、df/du 看磁盘、netstat/ping 看网络;排障的核心不是背命令,而是先定性(利用率 vs 负载、用户态 vs 系统态),再定位(哪类进程/哪层资源),最后处理

CPU 利用率 vs CPU 负载(最常考)

概念含义临界判断
CPU 利用率程序对 CPU 时间片的占用比例(实时)满 = 100%
CPU 负载一段时间内正在使用 + 等待使用 CPU 的平均任务数单核 >1 即排队
  • 查看命令:uptime / w(负载)、top(利用率 + 各进程占比)。
  • 判断标准:单核负载 1 = 满负荷;2 核 4 逻辑 CPU 总负载 <4 正常。
  • 负载与利用率无必然关系:利用率 100% 可能负载只有 1(一个计算密集任务);利用率低也可能负载高(一堆 IO 等待)。

查 CPU 核数:

bash
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l  # 物理 CPU 数
cat /proc/cpuinfo | grep "cpu cores" | uniq                    # 每物理 CPU 核数
cat /proc/cpuinfo | grep "processor" | wc -l                   # 逻辑 CPU 数

四种 CPU 异常场景排查

场景原因排查
负载高 + 利用率低IO 密集:大量任务等磁盘 → 大量 D 状态进程top 看负载 → ps -aux 查 D 状态进程
负载低 + 利用率高计算密集:任务少但每个耗时长(代码问题)top 找 CPU 最高进程直接定位
利用率 100%单进程打满toptop -Hp pid 找线程 → printf "0x%x\n" 线程ID 转十六进制 → jstack pid | grep '0x...' -C5 定位代码(jstack 参数是 Java 进程 PID 不是线程 PID)
慢 SQL/死锁拖垮全表扫描 IO 阻塞 → D 状态堆积MySQL 慢查询日志 / 死锁检测

命令速查(按场景)

文件与权限

需求命令
查看文件cat(全量)/ more(分页)/ less(分页可回翻)/ tail -fn 100(尾部)/ head(头部)
权限修改chmod u+x file / chmod 751 file / chmod u=rwx,g=rx,o=x / chmod -R 递归
属主修改chown user:group file
硬/软链接ln file link(硬)/ ln -s source link(软)
查找文件find / -name "x*"(慢但准)/ locate(快靠索引)/ which(PATH 找可执行)/ whereis(二进制+文档)
统计wc -l/-w/-c 行数/单词/字节

进程与任务

需求命令
查看进程ps -ef / ps -aux / ps -ef | grep xxx
后台运行命令 &jobs -l 看后台;fg 调前台;bg 恢复后台
终止进程kill -9 pidkill -l 看所有信号
环境变量env(全部)/ env $HOME(单个);export PS1='[\u@\h\w]\$' 改提示符

磁盘与网络

需求命令
磁盘空间df -hl(文件系统级,含元数据)/ du(目录文件级,用户程序)
网络连通ping / netstat / ifconfig(IP 与接口)
防火墙iptables

du vs df 区别(高频追问):df 查文件系统的磁盘分配图、考虑元数据(inode/超级块等);du 是用户级程序、不考虑元数据。所以 df 才是"真实"文件系统占用。

文本处理

  • grep:正则搜索,grep -i 忽略大小写,grep -v 取反。
  • awk -F ':' '{print $1"\t"$7}':按分隔符取列。
  • 通配符:? 单字符 · * 任意多字符 · [charset] 字符集。

网站访问慢排查(实战套路)

  1. 先定用户端还是服务端:自己访问试试,快则用户端问题;不要上来查服务端。
  2. 服务端慢 → 浏览器调试看哪一项加载慢(图片/数据)。
  3. 看资源:云平台监控 / top 看 CPU/MEM / sar 看网卡流量(判断是否被攻击)。
  4. 硬件正常 → 查日志:MySQL 慢查询日志找慢 SQL。
  5. 解决:加带宽 · SQL 优化 · 加 Redis 缓存 · MySQL 主从读写分离 · CDN · 架构拆分(专角色专用)。

Linux 性能调优方法(清单)

关闭无用 daemon · 关闭 GUI · 调内核参数(sysctl)· 处理器子系统调优 · 内存子系统调优 · 文件系统调优 · 网络子系统调优。

不变量(必须成立的约束)

  • D 状态进程无法终止,只能等资源恢复或重启系统。
  • 判断负载是否过高,必须除以逻辑核数(单核 1、4 核 4)。
  • 排查永远从源头定性开始(用户端/服务端 → 资源 → 日志),不要一上来 kill 进程。

常见误解

  • 以为"CPU 100% 就是负载高" → 利用率与负载是两个维度,可能一个满一个低。
  • 以为 dudf 一样 → du 是用户级统计,df 才是文件系统真实占用。
  • 以为 kill -9 是唯一终止方式 → 先 kill(SIGTERM)优雅退出,-9 是最后手段。

关联

最近更新