linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory
一、故障现象
1、用secure CRT连接服务器时显示:
/bin/bash:No such file or directory
翻译成中文是:没有此类文件或目录
2、直接登录服务器执行命令时显示:
/lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
翻译成中文大概的意思是:找不到/lib/ld-linux-x86-64.so.2文件
只有cd命令可以正常使用
二、故障原因
1、背景介绍
此服务器需要源码安装zabbix,而源码安装需要安装很多包,所以必须通过yum安装,在服务器上配置了yum之后是可以使用的,但只能装一些简单的包,只要依赖到glibc和gcc这种系统包时就会报错,比如安装net-snmp-devel这个包的时候就会报错,错误如下:

百度了下这个错误

上面这两条意思是说glibc-devel和glibc-headers缺少需要的glibc包

duplicate的意思是重复,意思是说上面这两个包有重复
关于重复包这个问题,在网上找了解决办法,但是没有成功,下图是解决办法:

上述两条命令是为了移除重复的rpm包,在服务器上照着执行,无果,错误依旧
因为yum报错的原因大概都是由于glibc包的问题,查看本机安装的glibc相关包:

看到这些包的小版本号各种对不上,于是想在官网下一个对应的glibc包安装试试是否可行,于是到centOS的官网找到对应的glibc包:

于是下载安装此包
安装的时候发现这个包也是有依赖包,yum又不能使用,就加了一个参数--nodeps(不检查依赖关系) –force(强制安装)执行安装,也就有了后面的系统奔溃了
2、原因推测
强制安装并且不检查依赖关系这两个参数的添加可能导致系统本身的glibc软件包损坏或者是覆盖掉本身的glibc包,总之是本身的glibc包不能正常使用了,除了cd,所有的命令都不能使用了,但是系统上的程序并不影响,nmsweb依旧可以访问
三、故障处理
1、前提条件
奔溃的服务器必须有挂载的镜像或者系统光盘,目的是要复制镜像里的或者系统光盘里的glibc包到奔溃的服务器里
2、 处理过程
2.1 重启系统后进入安装启动菜单,上下键移动到Rescue install system 救援安装系统:

2.2 等待系统加载完内核:

2.3 选择操作语言(一般是english):

2.4 选择键盘模式(US):

2.5 是否启动网络(建议不启动):

2.6 系统询问是否将系统以读写或只读模式挂载到/mnt/sysimage(别无选择):

2.7 系统再次询问是否将原操作系统挂载到/mnt/sysimage

2.8 成功进入linux救援模式

2.9 查看原操作系统的文件

2.10 RHEL5.5默认/dev/hda是光驱镜像(CentOS默认的光驱镜像是/dev/cdrom)
挂载光驱到/mnt/source下,并查看光驱内容
下图是RHEL5.5的操作方法,如果是CentOS系统的话应该是
mount /dev/cdrom /mnt/

2.11挂载好之后进入/mnt/packages目录下,就可以看到所有系统包了。将glibc相关rpm包复制到/root家目录

2.12 使用rpm2cpio命令将glibc-2.5-49.x86_64.rpm包制作成repo格式的文件

2.13 在/mnt/sysimage/root下创建util文件夹,然后cd util,再执行cpio -idcuv< ../util.repo进行util.repo的解压,在/mnt/sysimage/root/util/可以看到libx64,将其中所有文件复制到/mnt/sysimage/libX64下

2.14 注意:执行下图中的cp命令会报一个错:cp : omitting directory `rtkaio`,这个错误是因为复制的目录下面还有子目录,但是并不影响,可以跳过这个错误

2.15 执行chroot /mnt/sysimage (较难理解)
为什么要执行这个命令?原因是因为救援模式下启动的是一个基本的文件系统,就是ramdisk里的文件系统,并没有切换到本机硬盘上的“真正”文件系统,而是把磁盘上的根文件系统以只读的方式挂载在sysimage上,而chroot 则是手动切换到磁盘上的文件系统,只不过正常情况下,这个过程是自动的,而救援模式下就相当于把这一步给你省略了,所以得手动切换。

2.16 重新安装原操作系统镜像中的glibc包

2.17 然后重启系统完成glibc重装后的恢复操作

四、 故障总结
1、处理心得
在平时的工作中,面对生产环境要小心再小心,虽然这次奔溃事件没有耽误工作完成时间,却也是让人后怕的,因为如果不能顺利解决这个事情,有可能会重装系统,如果系统有诸多的程序,那可能也要付之东流了,这件事情也告诉我们有一个干净的系统是多么重要,如果系统之前没有安装那些低版本高版本的系统包,yum也就能正常安装,所以以后涉及到系统包的,一定要慎之又慎,切不可重蹈覆辙!
2、glibc、gcc、binutils的作用
gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。
binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编 (objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成 的,没有binutils的话,gcc是不能正常工作的。
glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其它任何的运行库 都会倚赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现
linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory的更多相关文章
- 解决方案-问题001:物理机、虚机等等Linux操作系统/usr/bin目录权限误操作,导致无法切换root
导语:平常运维人员会误操作一些目录权限,导致一些问题,那么如何恢复呢? 问题:物理机.虚机等等Linux操作系统/usr/bin目录权限误操作,导致无法切换root? 实验环境: ip地址 是否目录正 ...
- MySQL5.7下面,误操作导致的drop table db1.tb1; 的恢复方法:
MySQL5.7下面,误操作导致的drop table db1.tb1; 的恢复方法: 0.停业务数据写入.[iptables封禁] 1.从备份服务器上拉取最新的一个全备文件,恢复到一个临时的服务器上 ...
- linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案
linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案 今天在安装程序时,发现有一个插件未安装,我就随手敲了一个命令,看都 ...
- centos7.5误删python2.7之后,导致yum和Pythonm命令无法使用
问题描述 最近想要将服务器上的Python2.7升级成3.x的版本时.使用了如下命令: (1)强制删除已安装python及其关联 # rpm -qa|grep python|xargs rpm -ev ...
- Ambari集群里操作时典型权限问题put: `/home/bigdata/1.txt': No such file or directory的解决方案(图文详解)
不多说,直接上干货! 问题详情 明明put该有的文件在,可是怎么提示的是文件找不到的错误呢? 我就纳闷了put: `/home/bigdata/1.txt': No such file or dire ...
- SQL SERVER 还原误操作导致还原无法停止,处理办法
昨天遇到运行库不知道单位哪个小伙子,把数据库还原了,导致单位业务全部瘫痪,主数据库一直显示正在还原,真的是不敢动,经过多方寻找,找到此脚本-------------------------数据库还原日 ...
- 一次 MySQL 误操作导致的事故,「高可用」都顶不住了!
这是悟空的第 152 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 上次我们项目不是把 MySQL 高可用部署好了么,MySQL 双主模式 + Keepalived,来保证高可用 ...
- 误操作导致 lvdisplay 命令不存在解决
1.lvdisplay 命令不存在 查看lvm2 包被卸载2.执行 yum install lvm2 命令 发现 yum 被锁 3.删除yum.lock 发现/ 目录只读4.mount -o remo ...
- 请详细描述(以硬盘启动)Linux系统从打开主机电源到进入登录界面整个过程的流程。
1. 开机进行BIOS(BIOS(Basic Input / Output System)自检测系统外围硬件设备如CPU.内存.IO.显卡.鼠标键盘等.根据BIOS中设置的系统启动顺序搜索用于启动系统 ...
随机推荐
- [HTTP]_[C/C++]_[解析URL的转义字符百分比字符串]
场景: 1.有时候获取一个超链接时,或者一个图片src时,里面的地址带有%XX,这样如果当成文件路径处理会不识别.所以要把转义字符解码. 2.它其实就是ASCII码的十六进制表示. 以下是stacko ...
- ionic service
当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑.一定要早点意识到,controller 这一层应该很薄:也就是说,应用里大部分的业务逻辑和持久化 ...
- legend2---开发日志1(legend的数据库整体设计思路是什么)
legend2---开发日志1(legend的数据库整体设计思路是什么) 一.总结 一句话总结:不同种类的物品分不同的表放,不放到一个物品表里,取所有物品时一个个表的取就好了 不同种类的物品分不同的表 ...
- (转+整理)C# BinaryFormatter进行序列化与反序列化
序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.其目的是以某种存储形式使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方. .NET框架提供了两种种串行化的方式:1. ...
- 通过wifi 连接 adb 到 手机
网上很多文章都需要先用 usb 线连接先做一下设置,然后才能通过下面的方法连接 julian@julian-ThinkPad-T450:~/tools/android_sdk/platform-too ...
- HeadFirst Ruby 第十五章总结 Saving and loading data
前言 在上一章讲述了如何进行基础的操作,比如 处理 GET 请求的 get route, 再比如下载 gem 等等方面的知识.在这一章节,作者告诉我们如何储存.处理数据.整个过程分三步走: 首先,当 ...
- Getting started with Processing 第十一章——数组
Getting started with Processing 第十一章——数组 从变量到数组: 使用数组,无需为每一个变量创建一个新的名称/这让代码变得更短,更容易理解,更方便更新. 创建数组的三个 ...
- java日志及异常错误信息输出的问题
1.异常信息可以层层传递,直到最后一层再输出日志也来得及 2.错误信息要在发生错误的当时就输出日志,否则到了其它层,很难得到准确的错误信息内容
- libavcodec是一款LGPL自由软件编解码库,用于视频和音频数据的编解码工作
http://zh.wikipedia.org/zh-cn/Libavcodec http://baike.baidu.com/view/856526.htm libavcodec是一款LGPL自由软 ...
- 看到篇博文,用python pandas改写了下
看到篇博文,https://blog.csdn.net/young2415/article/details/82795688 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...