如何拯救频临崩溃的linux系统
2025-12-11 09:05:42
RAIZ
当Linux系统濒临崩溃时,别慌!这里有一份详细的拯救指南,从简单到复杂逐步解决问题。
1. 首先尝试进入系统
单用户模式/救援模式
# 在GRUB启动菜单时,按'e'编辑启动参数
# 在linux行末尾添加:
single
# 或
systemd.unit=rescue.target
# 按Ctrl+X启动恢复模式
# 如果系统有恢复模式选项,直接选择进入
# 这会挂载根分区为只读,然后获得root shell2. 磁盘空间问题排查
检查磁盘使用情况
df -h # 查看各分区使用率
du -sh /* 2>/dev/null | sort -hr | head -10 # 查找大目录清理常见空间占用
# 清理日志文件
journalctl --disk-usage
journalctl --vacuum-time=7d # 保留7天日志
# 清理包缓存
apt-get clean # Debian/Ubuntu
yum clean all # CentOS/RHEL
dnf clean all # Fedora
# 清理临时文件
rm -rf /tmp/*
rm -rf /var/tmp/*3. 文件系统修复
检查并修复文件系统
# 首先卸载分区(如已挂载为只读)
umount /dev/sda1
# 使用fsck修复
fsck -y /dev/sda1 # 自动修复错误
fsck -c /dev/sda1 # 检查坏块对于根分区
# 如果根分区有问题,使用Live CD/USB启动
# 然后挂载并修复:
mkdir /mnt/root
mount /dev/sda1 /mnt/root
fsck -y /dev/sda14. 内存问题处理
检查内存使用
free -h
cat /proc/meminfo
# 查找内存泄漏进程
ps aux --sort=-%mem | head -10清理内存缓存
echo 3 > /proc/sys/vm/drop_caches
5. 系统关键服务恢复
检查系统日志
dmesg | tail -50 # 查看内核日志
journalctl -xb # 查看系统日志(systemd)
tail -100 /var/log/syslog # 查看系统日志重启关键服务
systemctl --failed # 查看失败的服务
# 重启关键服务
systemctl restart systemd-journald
systemctl restart dbus
systemctl restart network-manager6. 包管理系统修复
Debian/Ubuntu 系统
# 修复损坏的包
dpkg --configure -a
apt-get install -f
apt-get update --fix-missing
# 重新配置包
dpkg-reconfigure -aCentOS/RHEL 系统
# 修复RPM数据库
rpm --rebuilddb
yum clean all
yum update7. 使用Live CD/USB救援
当无法进入系统时,这是最有效的方法:
挂载原系统分区
# 在Live环境中
fdisk -l # 查看分区
mkdir /mnt/root
mount /dev/sda1 /mnt/root # 挂载根分区
mount /dev/sda2 /mnt/root/boot # 挂载boot分区(如有)
mount --bind /dev /mnt/root/dev
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/syschroot到原系统
chroot /mnt/root /bin/bash
# 现在可以在原系统中执行修复命令8. 内核问题处理
恢复旧内核
# 查看可用内核
dpkg -l | grep linux-image # Debian/Ubuntu
rpm -qa | grep kernel # CentOS/RHEL
# 在GRUB中选择旧内核启动重新安装内核
# Debian/Ubuntu
apt-get install --reinstall linux-image-generic
# CentOS/RHEL
yum reinstall kernel9. 数据备份策略
在系统还能运行时立即备份:
# 备份重要数据
tar -czf /backup/home_backup.tar.gz /home
tar -czf /backup/etc_backup.tar.gz /etc
# 备份包列表
dpkg --get-selections > /backup/package_list.txt # Debian/Ubuntu
rpm -qa > /backup/package_list.txt # CentOS/RHEL10. 预防措施
定期维护任务
# 设置日志轮转
logrotate -f /etc/logrotate.conf
# 定期更新系统
apt update && apt upgrade # Debian/Ubuntu
yum update # CentOS/RHEL
# 监控磁盘空间
# 可以添加到crontab中系统监控设置
# 安装监控工具
apt install htop iotop nmon # Debian/Ubuntu
yum install htop iotop nmon # CentOS/RHEL紧急情况处理优先级
1. 立即行动:磁盘空间不足、内存耗尽 2. 尽快处理:文件系统错误、关键服务崩溃 3. 计划处理:内核问题、系统更新
记住,保持冷静,按步骤排查,优先备份重要数据!如果问题复杂,考虑使用Live环境进行修复或及时寻求专业帮助