CentOS系统故障诊断技巧
故障诊断的第一步是获取足够的信息,明确故障范围。需收集以下内容:
/var/log/messages,记录系统常规事件)、安全日志(/var/log/secure,记录认证/授权事件)、应用日志(如/var/log/httpd/error_log(Apache)、/var/log/mysql/error.log(MySQL)),定位具体错误信息;uptime查看系统运行时间及负载(load average),top/htop监控CPU、内存占用排名,free -m查看内存使用量(重点关注available内存),df -h检查磁盘空间(重点关注/、/var分区),dmesg查看内核环缓冲区消息(如硬件检测异常、驱动加载失败)。根据收集的信息,将故障归类为硬件故障(内存、硬盘、CPU)、软件故障(服务崩溃、配置错误、依赖冲突)、网络故障(连接中断、DNS解析失败、端口不通)。例如:
dmesg显示“ata1.00: hard disk error”,则为硬盘硬件故障;systemctl status httpd显示“failed”,则为Apache服务软件故障;ping www.example.com超时,则为网络连通性问题。ping <IP>:测试与目标主机的连通性(如ping 8.8.8.8);ip addr/ifconfig:查看网络接口IP地址、MAC地址及状态(如ip addr show eth0);netstat -tulnp/ss -tulnp:查看系统监听端口及对应进程(如netstat -tulnp | grep 80);traceroute <IP>:追踪数据包路由路径(排查网络跳点问题);nslookup www.example.com/dig www.example.com:检查DNS解析是否正常。fsck /dev/sdX:检查和修复文件系统错误(需进入单用户模式或救援模式,如fsck /dev/sda1);smartctl -a /dev/sdX:使用S.M.A.R.T.工具检查硬盘健康状况(如smartctl -a /dev/sda);du -sh /*:查找大文件(从根目录开始,如du -sh /var/*)。free -m:查看内存使用情况(重点关注available内存,若接近0则需扩容或优化应用);memtest86:启动时选择内存测试工具(需从U盘启动,全面检测内存坏道)。ps aux | grep <进程名>:查看指定进程的详细信息(如ps aux | grep httpd);systemctl status <服务名>:检查服务运行状态(如systemctl status httpd);systemctl restart <服务名>:重启服务(如systemctl restart httpd);top:实时查看进程CPU、内存占用(按M按内存排序,按P按CPU排序)。日志是故障诊断的“金矿”,需掌握以下方法:
grep "ERROR" /var/log/messages搜索错误关键词,grep -E "ERROR|WARNING" /var/log/syslog同时搜索多个关键词;tail -f /var/log/httpd/error_log实时查看应用层错误(如Apache报错);awk '{print $1, $4}' /var/log/messages提取日志时间、主机名等字段,sort | uniq -c统计重复日志条目(如grep "connection refused" /var/log/messages | sort | uniq -c统计连接拒绝次数);yum install logwatch && logwatch --output mail --mailto admin@example.com);e,修改linux16/linuxefi行(在ro后添加rw init=/bin/bash),按Ctrl+X进入(用于重置root密码、修复配置文件);mount /dev/sda2 /mnt/sysimage),进入chroot /mnt/sysimage环境修复(如chroot /mnt/sysimage && passwd root重置密码)。systemctl status <服务名>查看失败原因(如systemctl status httpd显示“配置文件错误”),使用httpd -t测试Apache配置语法;journalctl -u <服务名> -n 50查看服务最近50条日志(如journalctl -u httpd -n 50);systemctl list-dependencies <服务名>查看服务依赖(如systemctl list-dependencies httpd),确保依赖服务已启动。M排序内存占用,按P排序CPU占用,找到高消耗进程(如java进程占用90% CPU);kill -9 <PID>强制终止(如kill -9 1234);MaxClients值)、增加系统资源(如升级内存)。cp /etc/httpd/conf/httpd.conf.bak /etc/httpd/conf/httpd.conf);yum reinstall <软件包>重新安装(如yum reinstall httpd);systemctl restart <服务名>)或主机(reboot),注意影响范围(如生产环境需提前通知);echo "$(date) - Fixed httpd service by restarting" >> /var/log/fault_log),分析根本原因(如配置错误、资源不足),制定预防措施(如设置磁盘空间告警、定期更新软件)。