Linux运维故障排查速查命令清单
一、系统基础状态(第一时间执行)
核心概览命令
bash
# 运行时长、平均负载
uptime
# 系统整体资源实时监控
top
htop # 需安装,可视化更强,交互更友好
# 内存、swap使用情况(人类可读格式)
free -h
# 磁盘分区空间占用
df -h
# inode占用(排查小文件爆满问题)
df -i
# 磁盘整体IO负载(1秒刷新一次)
iostat -x 1
# 内核硬件、崩溃报错(带时间戳)
dmesg -T
# 系统全局日志实时追踪
tail -f /var/log/messages
# CentOS7+/RHEL7系统日志(详细报错)
journalctl -xe
二、CPU高负载排查
定位高CPU进程/线程
bash
# 按CPU使用率降序排序进程
ps aux --sort=-%cpu
# 单个进程CPU线程详情(1秒刷新)
pidstat -u 1
# 定位高CPU线程(Java等多线程程序常用)
top -H -p 进程ID
# 查看定时任务是否异常
cat /etc/crontab
crontab -l
三、内存OOM、内存溢出排查
内存占用与OOM排查
bash
# 按内存使用率降序排序进程
ps aux --sort=-%mem
# 进程内存详细统计(1秒刷新)
pidstat -r 1
# 查看被删除但未释放的大日志文件(句柄残留)
lsof | grep deleted
# 临时清理缓存(生产环境谨慎执行)
sync; echo 3 > /proc/sys/vm/drop_caches
# 查看OOM杀死进程记录
grep -i oom /var/log/messages
dmesg | grep -i kill
# swap使用详情
cat /proc/swaps
# 查看系统swappiness参数(内存使用策略)
cat /proc/sys/vm/swappiness
四、磁盘空间 & IO故障
4.1 空间查找
bash
# 逐层查找大目录
du -sh /*
du -sh /data/*
# 查找系统中大于1G的文件
find / -type f -size +1G -exec ls -lh {} \;
4.2 IO卡死、磁盘慢
bash
# 实时IO统计(1秒刷新)
iostat -x 1
# 进程级IO占用监控
iotop
# 进程IO详细统计(1秒刷新)
pidstat -d 1
# 磁盘坏道检测(需安装smartmontools)
smartctl -a /dev/sda
# 文件系统检查(必须先卸载分区)
umount /dev/sdb1
fsck.ext4 /dev/sdb1
# 只读模式查看磁盘挂载参数
mount
五、网络连通、端口、延迟排查
5.1 网卡基础
bash
# 查看网卡IP、状态
ip a
# 查看路由表
ip route
# 查看主机名对应IP
hostname -i
# 网卡流量实时统计(1秒刷新)
sar -n DEV 1
5.2 连通性、丢包延迟
bash
# 测试与网关/目标IP连通性
ping 网关/IP
# 路由逐跳丢包检测(最强网络排错工具)
mtr 目标IP
# DNS解析测试
nslookup baidu.com
dig baidu.com
# 临时修改DNS(重启网络后失效)
echo "nameserver 114.114.114.114" > /etc/resolv.conf
5.3 端口占用、监听
bash
# 全量端口监听状态(推荐,比netstat高效)
ss -tulnp
# 老式端口监听查看(兼容旧系统)
netstat -tulnp
# 查指定端口占用进程
ss -tulnp | grep 8080
# 端口连通测试
telnet IP 端口
curl -v IP:端口
# 防火墙状态与规则
firewall-cmd --list-all
systemctl status firewalld
5.4 SSH专属故障
bash
# 查看ssh服务状态
systemctl status sshd
# 关闭DNS反向解析(解决ssh登录卡顿)
grep UseDNS /etc/ssh/sshd_config
# 密钥权限校验(.ssh目录需700,密钥文件需600)
ls -l ~/.ssh/
六、服务启停、崩溃排查
bash
# 查看服务运行状态
systemctl status nginx mysqld redis
# 查看所有服务开机自启状态
systemctl list-unit-files --type=service
# 查看服务启动详细报错日志
journalctl -u nginx -xe
# 手动前台启动服务(直接看报错)
nginx -c /etc/nginx/nginx.conf
# Nginx配置文件语法校验
nginx -t
# MySQL配置文件安全检测
mysqld --validate-config
七、权限、SELinux、sudo问题
bash
# 查看SELinux状态
getenforce
# 临时关闭SELinux(重启后失效)
setenforce 0
# 查看文件安全上下文(SELinux相关)
ls -Z 文件名
# 检查sudo配置文件语法
visudo -c
# 查看用户归属组
id root
id 普通用户名
# 查看当前用户打开文件数限制
ulimit -n
# 系统全局文件句柄限制配置
cat /etc/security/limits.conf
# 使用绝对路径执行脚本,调试脚本执行过程
sh -x /path/to/script.sh
八、高频故障场景排查(现象+原因+方案)
8.1 僵尸进程过多(defunct)
- 故障现象 :
ps查看大量defunct进程,占用系统进程资源 - 核心原因:子进程退出后父进程未回收、程序异常退出
- 解决方案:重启对应业务服务、重启服务器彻底清理,优化程序进程回收机制
8.2 Permission denied 权限拒绝
-
故障现象:无法读写文件、脚本执行失败、服务启动报错权限不足
-
核心原因:文件属主属组错误、权限不足、SELinux拦截、挂载参数限制
-
解决方案 :
bash# 修改文件/目录权限 chmod 755 文件/目录 # 修改文件/目录属主属组(递归) chown -R 用户:组 文件/目录 # 临时关闭SELinux setenforce 0 # 永久关闭SELinux(修改配置文件) vi /etc/selinux/config # 将SELINUX=enforcing改为SELINUX=disabled
8.3 文件系统只读(Read-only file system)
-
故障现象:所有写入操作报错只读,无法修改任何文件
-
核心原因:磁盘文件系统损坏、fstab配置错误、磁盘异常触发内核保护
-
解决方案 :
bash# 重新挂载根目录为读写模式 mount -o remount,rw / # 修复文件系统(需先卸载分区) umount /dev/分区名 fsck /dev/分区名 # 检查并修正/etc/fstab错误配置 vi /etc/fstab
8.4 SSH无法连接服务器
-
故障现象:连接超时、连接被拒绝、密码正确无法登录
-
核心原因:sshd服务未启动、22端口不通、ssh配置错误、密钥文件权限异常、用户锁定
-
解决方案 :
bash# 确保SSH服务正常运行 systemctl status sshd systemctl start sshd # 客户端测试22端口连通性 nc -zv 服务器IP 22 # 修复.ssh目录及密钥权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa # 解锁用户 passwd -u 用户名
8.5 Sudo提权失败
-
故障现象:普通用户sudo命令报错,无法获取root权限
-
核心原因:用户未加入wheel组、sudoers文件语法错误、文件权限异常
-
解决方案 :
bash# 添加用户到wheel组(sudo权限组) usermod -aG wheel 用户名 # 修复sudoers文件语法(必须用visudo编辑) visudo # 确保sudoers文件权限为440 chmod 440 /etc/sudoers
8.6 开机进入emergency紧急模式
-
故障原因:fstab挂载错误、磁盘分区损坏、根文件系统挂载失败
-
解决方案 :
bash# 紧急模式下重新挂载根目录为读写 mount -o remount,rw / # 注释/etc/fstab中错误的挂载条目 vi /etc/fstab # 测试挂载配置 mount -a # 修复磁盘文件系统后重启 fsck /dev/分区名 reboot
8.7 打开文件数过多(too many open files)
-
故障原因:系统/进程最大文件句柄数配置过低、长连接未释放
-
解决方案 :
bash# 修改系统全局文件句柄限制 vi /etc/security/limits.conf # 添加以下配置(*代表所有用户) * soft nofile 65535 * hard nofile 65535 # 重启服务生效 systemctl restart 服务名
8.8 系统时间/时区异常
-
故障影响:证书失效、定时任务错乱、日志时间错误
-
解决方案 :
bash# 同步时区为上海 timedatectl set-timezone Asia/Shanghai # 开启NTP时间同步 systemctl start ntpd systemctl enable ntpd
九、运维常备排查命令速查表
| 排查维度 | 核心命令 | 用途 |
|---|---|---|
| 系统状态 | uptime、free -h、df -h、df -i |
快速查看系统负载、内存、磁盘空间 |
| 进程资源 | top、iotop、mpstat、perf top |
定位高CPU/IO/内存进程 |
| 网络排查 | ip a、ip r、ss -tulnp、ping、mtr |
网卡、路由、端口、连通性排查 |
| 日志排查 | journalctl -xe、tail -f /var/log/messages |
系统、服务报错日志查看 |
| 文件磁盘 | du -sh、lsof、fsck、mount |
大文件查找、句柄残留、文件系统修复 |
需要我把这份清单整理成可直接复制的一键排查脚本 ,并按CentOS Stream 9环境适配吗?