news 2026/4/23 8:35:48

Linux常见系统故障案例说明并修复解决(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux常见系统故障案例说明并修复解决(上)

Linux系统故障排查思路实践教程(下)https://coffeemilk.blog.csdn.net/article/details/155903189

一、恢复Linux下的误删除文件

1.1、故障情况

在Linux系统上执行【rm -rf】误删除了指定分区的全部数据,且被删除的这个分区文件系统类型是【ext4】格式,现在需要将这个分区上被删除的数据恢复,如下图所示:

#直接执行【rm -rf】命令将指定分区(或当前分区)的数据全部删除了 rm -rf ./*

1.2、故障应急处理

若需要对这个分区的数据进行恢复,必须赶紧将这个需要恢复的分区卸载掉(或者立刻断电关机、或安全的将该分区所在硬盘移除;一定不能重启,不能重启,不能重启!!!【因此,生产环境的数据内容一定不要放在根分区,这样生产环境数据出问题后后续的操作会安全便利很多】)【主要目的是不能再给该分区中写入数据,这样会十分危险,继续写入数据会让被删除的数据被覆盖掉就很难恢复了】。

#1-卸载需恢复数据的分区(如:/data2)卸载前先查看当前磁盘情况 df -hT umount /data2 #2-若在卸载分区时提示“目标忙”,则是因为被一些进程或用户占用,查询到这些进程后强制杀死后再次卸载 #2.1-查看占用该分区的所属用户、进程PID、权限和对应命令 fuser -mv /data2 #2.2-查看所有打开该分区内文件的进程 lsof +D /data2 #2.3-强制杀死获取到的占用PID kill -9 2648 #3-再次执行卸载分区操作 #3.1-【懒卸载】在分区不再繁忙时自动完成卸载,对数据的风险相对较低 umount -l /data2 #3.2-【强卸载】强制中断所有占用连接完成卸载,适用于部分网络文件系统,风险较高,非必要不使用 umount -f /data2

1.3、数据恢复

对于【ext4】格式的分区数据恢复可以使用【ext4magic】工具来恢复。

#使用【ext4magic】工具来恢复指定分区数据(ext4magic的下载地址是【https://rpmfind.net/linux/rpm2html/search.php?query=ext4magic%28x86-64%29&submit=Search+...&system=&arch=】) #1-下载并安装ext4magic rpm -ivh ext4magic-0.3.2-4.23.x86_64.rpm #2-使用【ext4magic】先扫描指定分区后会显示可恢复的数据内容(未显示的就没法恢复了) ext4magic /dev/sdb -f / ext4magic /dev/sdb -I 2 #3-恢复指定分区的数据 #先创建 /dev/sdb 的只读映像,再从映像恢复(避免源设备写入) ext4magic /dev/sdb -C /mnt/sdb_backup.img -r -d /mnt/recover -v #3.1-将指定分区下的数据全部恢复到指定目录 ext4magic /dev/sdb -r -d /恢复目录 #3.2-将指定分区下当天10点到当前时间的数据都恢复到指定目录中 ext4magic /dev/sdb -r -a $(date -d "today 10:00:00" +%s) -b $(date +%s) -d /恢复目录
#可使用【PhotoRec】工具来恢复指定分区的数据 #官网地址是【https://www.cgsecurity.org/wiki/Main_Page】 #【该工具的下载地址是:https://www.cgsecurity.org/wiki/%E4%B8%8B%E8%BD%BD_TestDisk】 #1-下载【TestDisk & PhotoRec 7.2】 wget https://www.cgsecurity.org/testdisk-7.2.linux26-x86_64.tar.bz2 #2-解压 tar -jxvf testdisk-7.2.linux26-x86_64.tar.bz2 #3-运行【PhotoRec】工具来恢复指定磁盘数据 cd testdisk-7.2 photorec_static
#【优先推荐】若该服务器拥有图形化界面还可以使用【R-Linux】来恢复(下载地址是:https://www.r-studio.com/zhcn/free-linux-recovery/Download.shtml) #1-下载【R-Linux】软件 wget https://www.r-studio.com/downloads/RLinux6_x64.rpm #2-安装【R-Linux】软件 rpm -ivh RLinux6_x64.rpm #3-启动【R-Linux】软件会显示图形界面操作(即:选中需要恢复数据的分区扫描,扫描完成后点击顶部的【显示文件】,然后选中左侧的【Root】后勾选右侧需要恢复的文件,最后点击顶部【恢复标记的】即可) rlinux

二、修复Linux系统无法启动故障

2.1、故障情况

系统启动后不能正常进入系统内,而是停留显示在【grub】或【grub rescue】界面,如下图所示:

2.2、故障分析

看到grub字样,一般是关联系统引导内容(也就是说是系统引导相关的内容出问题了),可在故障界面直接先输入【ls】命令查看一下情况。系统无法正常启动,且进入单用户后好多命令是无法使用的,这个时候建议就是直接使用此系统的镜像文件配合系统启动U盘或者PXE来进入系统救援模式进行操作。

#故障分析方法(对于系统无法正常启动情况进入到系统中;建议【直接进入系统救援模式】排查操作) #1-准备与该系统一致的系统镜像放置到系统启动U盘或PXE中 #2-将系统启动U盘插入该服务器并设置从该系统启动U盘启动 #3-选择【Troubleshooting】-->【Rescue a Kylin Linux Advanced Server system】-->【exit】后正式进入系统的救援模式中 #4-输入【1】以读写模式在系统救援模式中操作-->【df -h】查看系统当前挂载的情况(当前是有系统镜像挂载的类似Windows pe 环境的系统与原本的系统)-->【chroot /mnt/sysroot】实现只将原有系统正常挂载使用(这就是我们想要操作的界面效果) #5-重点关注报错界面中查看了没有任何数据的分区(逐一查看后可以发现是/boot 这个系统引导的关键分区里面数据都没有了,定位到问题了) cd /boot ls

2.3、故障修复

#现在已经定位到是由于【/boot】系统引导分区的内容都没有了,接下来就是恢复【/boot】分区内容 #1-先安装基础系统引导内容到【/boot】所在的硬盘中(如:/dev/sda) grub2-install /dev/sda #2-还需要生成与该系统环境一致的内核文件【vmlinuz】与系统根文件【initrd.lz】相关内容(即:挂载系统镜像从系统镜像中安装对应的内核包【以 kernel-core 开头的rpm包(如:kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm)】即可) mount /dev/cdrom /mnt df -hT cd /mnt cd Packages/ ls -al kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm rpm -ivh kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm --force #3-生成系统引导菜单文件 ll -a /boot/grub2 grub2-mkconfig > /boot/grub2/grub.cfg #4-退出当前正常的系统救援模式后重启电脑 exit reboot #5-将系统引导U盘移除(系统能够正常引导进入系统,问题解决)

到这里表示恭喜你,故障修复完成,系统可以正常启动进入了。

三、修复系统资源配置错误故障

3.1、故障情况

使用ssh登录或服务器主机登录到服务器上提示“Permission denied(权限被拒绝)”或者无法登录到系统中,像是卡住了。如下图所示:

3.2、故障分析

当输入账号密码登录服务器的时候提示权限被拒绝(首先排查是否密码输入错误,其次排查是否该服务器的网络问题(如:网络不稳定【使用ping ip 方法排除】或者IP被其他设备使用));排除这两个问题后就只能进入系统救援模式进行排查问题了。

#进入系统救援模式排查问题 #1-准备与该系统一致的系统镜像放置到系统启动U盘或PXE中 #2-将系统启动U盘插入该服务器并设置从该系统启动U盘启动 #3-选择【Troubleshooting】-->【Rescue a openEuler system】后正式进入系统的救援模式中 #4-输入【1】以读写方式在系统救援模式中操作-->【df -h】查看系统当前挂载的情况(当前是有系统镜像挂载的类似Windows pe 环境的系统与原本的系统)-->【chroot /mnt/sysroot】实现只将原有系统正常挂载使用(这就是我们想要操作的界面效果) #5-查看系统中SSH的日志内容排查问题(可以查看到显示【Could not set limit for 'nofile': Operation not permitted(即:无法为 'nofile' 设置限制:操作不允许)】那是不是这个nofile配置的太少了?) tail -f /var/log/secure #6-了解nofile并查看系统中配置文件【/etc/security/limits.conf】里面配置的是多少【nofile是类 Unix(如 Linux)系统中用于限制单个进程可打开的文件描述符最大数量的配置项。这里的文件描述符不仅指代普通文件,还涵盖网络套接字、管道、设备等各类 I/O 资源,它的核心作用是管控系统资源使用,避免单个进程过度占用资源而影响系统稳定性】 cat /etc/security/limits.conf

3.3、故障修复

#现在已经定位到故障是由于在【/etc/security/limits.conf】的配置文件中配置的(nofile【单个进程可打开的文件描述符最大数量】太大了,导致系统无法申请到这么多的资源分配,因此拒绝) #1-现在只用编辑【/etc/security/limits.conf】文件修改配置的nofile值(一般在60万左右即可)后保存退出 vi /etc/security/limits.conf * hard nofile 655360 * soft nofile 655360 #2-重启系统让配置生效 exit reboot #3-重新登录验证(已经可以正常登录了)

系统重启后,可以正常登录到系统中,则恭喜你,问题修复了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:13:16

480万人才缺口下,零基础转行网络安全:是风口还是挑战?

网络安全作为近两年兴起的热门行业,成了很多就业无门但是想转行的人心中比较向往但是又心存疑惑的行业,毕竟网络安全的发展史比较短,而国内目前网安的环境和市场情况还不算为大众所知晓,所以到底零基础转行入门网络安全之后&#…

作者头像 李华
网站建设 2026/4/23 12:47:42

基于SpringBoot的体育馆管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦传统体育馆管理流程繁琐、场地预约低效、资源调度混乱的痛点,开展基于SpringBoot的体育馆管理系统的设计与实现工作。系统以Java为核心开发语言,依托SpringBoot框架搭建轻量高效的后端服务架构,负责处理场地预订、器材管理…

作者头像 李华
网站建设 2026/4/23 12:58:03

C++多线程入门

博主介绍:程序喵大人 35 - 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x…

作者头像 李华
网站建设 2026/4/23 11:26:06

28、实用 awk 程序大集合

实用 awk 程序大集合 在日常的数据处理和文本操作中,awk 是一个功能强大且灵活的工具。本文将介绍一系列实用的 awk 程序,涵盖文件分割、输出复制、去重、计数、查找重复单词、闹钟设置以及字符转写等多个方面。 1. 文件分割程序 文件分割程序的主要功能是将一个大文件分割…

作者头像 李华
网站建设 2026/4/23 11:27:14

30、高级编程技巧与 gawk 特性深度解析

高级编程技巧与 gawk 特性深度解析 1. shell 脚本与命令替换 在 shell 编程中,有一种操作是将 shell 脚本到标记处的内容作为输入传递给命令。shell 会对 here 文档的内容进行变量和命令替换(可能还会有其他操作,具体取决于 shell)。 1.1 命令替换 $(…) 这种 shell 结…

作者头像 李华
网站建设 2026/4/23 12:46:58

【Java数组】--数组实战

个人主页 文章目录前言一、Arrays工具类1.1 toString1.2 sort1.3自己写1.3.1 输出1.3.2 排序冒泡排序是什么?实战一下优化二、稀疏数组三、结尾前言 本文将简单讲解Array的使用以及实战、冒泡排序以及稀疏数组,帮助你快速了解数组 一、Arrays工具类 这…

作者头像 李华