Linux系统错误排查与修复指南
在开始排查前,需先收集故障信息,这是定位问题的核心依据:
系统日志记录了内核、服务、应用程序的运行状态和错误信息,是定位问题的“指南针”。
/var/log/syslog(Ubuntu/Debian)或/var/log/messages(RHEL/CentOS):记录系统常规信息与错误详情;/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(RHEL/CentOS):记录身份验证事件(如登录失败);/var/log/kern.log:记录内核层面错误(如硬件驱动问题);/var/log/dmesg:显示内核环形缓冲区内容(开机时生成,含硬件检测信息)。tail -f /var/log/syslog:实时监控日志更新(适用于动态故障,如服务崩溃);grep "error" /var/log/syslog:过滤包含“error”的日志行(快速定位错误信息);journalctl -u nginx.service:查看特定服务(如Nginx)的详细日志(Systemd系统专用)。资源耗尽可能导致系统缓慢、服务崩溃或无法启动:
df -h查看各分区使用率,若某分区使用率接近100%(如/var分区),需清理临时文件(/tmp)、旧日志(/var/log)或大文件(如数据库备份)。free -h查看内存占用,若available内存过低(如<10%),需重启占用内存高的进程(如top命令找出内存占用TOP10的进程,用kill -9 PID终止)。top或htop查看CPU占用,若某进程占用过高(如>80%),需分析该进程是否异常(如恶意程序、死循环)。服务异常(如崩溃、未启动)是常见故障原因:
ps aux | grep <进程名>查找特定进程,若进程不存在,说明服务未启动;若进程存在但状态异常(如“D”状态,不可中断睡眠),需重启服务。systemctl restart <服务名>(如systemctl restart nginx)重启服务,查看服务是否恢复正常。journalctl -u <服务名>查看服务详细日志,定位失败原因(如配置文件错误、依赖缺失)。文件系统损坏可能导致数据丢失、系统无法启动:
umount /dev/sda1,需确保分区未被挂载);fsck -y /dev/sda1(-y表示自动修复错误),根据提示修复文件系统;mount /dev/sda1 /mnt),重启系统。网络问题是导致系统无法访问外部资源或被访问的常见原因:
ip a:查看网络接口IP地址是否正确(如eth0是否分配了IP);ip link:查看网络接口状态(是否为“UP”,若为“DOWN”,用ip link set eth0 up启用);ping 8.8.8.8:测试网络连通性(若无法ping通,可能是网卡故障或网络配置错误)。systemctl status NetworkManager:查看网络管理服务状态(若未运行,用systemctl start NetworkManager启动);netstat -tulnp:查看监听端口(如Nginx的80端口是否在监听),确认服务是否正常启动。df -h定位满的分区,清理/tmp、/var/log等目录;fsck修复文件系统(步骤见上文),修复后重新挂载为读写模式(mount -o remount,rw /dev/sda1)。apt install nginx(Debian/Ubuntu)、yum install nginx(RHEL/CentOS));netstat -tulnp | grep :80查找占用端口的进程,用kill -9 PID终止该进程,再重启Nginx。sudo提升权限(如sudo rm /root/file);chmod +x script.sh赋予执行权限,chown user:group file修改所属用户/组)。rsync、tar或专业备份工具(如Bacula)定期备份重要数据(如/home、/etc、数据库),并测试备份的可恢复性。apt update && apt upgrade(Debian/Ubuntu)或yum update(RHEL/CentOS)更新系统软件包,修复已知漏洞。Nagios、Zabbix或Prometheus监控系统资源(CPU、内存、磁盘)、服务状态(如Nginx、MySQL),及时发现异常并发出警报。logrotate定期轮转日志(如每天生成一个新日志文件,保留7天),避免日志文件过大占用磁盘空间。