如何拯救频临崩溃的linux系统

2025-12-11 09:05:42 RAIZ

 

当Linux系统濒临崩溃时,别慌!这里有一份详细的拯救指南,从简单到复杂逐步解决问题。

1. 首先尝试进入系统

单用户模式/救援模式

# 在GRUB启动菜单时,按'e'编辑启动参数
# 在linux行末尾添加:

single
# 或

systemd.unit=rescue.target
# 按Ctrl+X启动

恢复模式

# 如果系统有恢复模式选项,直接选择进入
# 这会挂载根分区为只读,然后获得root shell

2. 磁盘空间问题排查

检查磁盘使用情况

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/sda1

4. 内存问题处理

检查内存使用

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-manager

6. 包管理系统修复

Debian/Ubuntu 系统

# 修复损坏的包
dpkg --configure -a
apt-get install -f
apt-get update --fix-missing

# 重新配置包

dpkg-reconfigure -a

CentOS/RHEL 系统

# 修复RPM数据库
rpm --rebuilddb
yum clean all
yum update

7. 使用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/sys

chroot到原系统

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 kernel

9. 数据备份策略

在系统还能运行时立即备份:

# 备份重要数据
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/RHEL

10. 预防措施

定期维护任务

# 设置日志轮转
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. 1. 立即行动:磁盘空间不足、内存耗尽
  2. 2. 尽快处理:文件系统错误、关键服务崩溃
  3. 3. 计划处理:内核问题、系统更新

记住,保持冷静,按步骤排查,优先备份重要数据!如果问题复杂,考虑使用Live环境进行修复或及时寻求专业帮助

 

我要咨询