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天),避免日志文件過大占用磁盤空間。