Linux系统命令找不到了,只能重装系统?

发表于:2021-5-17 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:社长    来源:运维研习社

  运维时间长了,总会遇到各种难搞的问题,虽然说Linux不像windows server那样容易出蓝屏,无法启动之类的系统问题,但也不是不会出现系统层面的故障,比如今天在群里有小伙伴遇到的:
  环境变量问题,导致大部分命令无法使用,环境变量临时修改不生效,也没办法,最终打算重做系统。
  重做系统,抛开数据不说,系统上所有环境都要重新搭建,当然不是最佳选择。
  其实系统层面的问题,不管是windows还是linux,都有一种简单的方式,就是镜像修复,windows和linux都提供一种通过镜像修复系统的功能。
  我直接拿虚拟机来和CentOS7系统来做个简单演示。
  工具:Hyper-v/CentOS7镜像。
  要演示修复,我先得把系统搞挂,所以先做个快照。
  做完快照,做个很多人都做过的操作,rm -rf,把/bin目录下的命令都删掉。
  有人说bin目录删掉之后,ls命令还可以使用。
  whereis查一下,你就会发现,/usr/bin目录下也存在ls命令,在CentOS6之前,/usr/bin和/bin是分开的,/bin下是系统级命令,/usr/bin下是用户级别以及应用安装后可执行命令,到CentOS7之后,/bin目录成了/usr/bin目录的软链,两个合并了,所以上面删除了的是软链,接着,重新删一下/usr/bin下命令都干掉。
  ok,完美的玩了一把rm -rf ,命令全都执行不了了,开始修复。
  这里用的是hyper-v虚拟机,所以把镜像挂载到cd/dvd之后,重启。
  挂上去,可以在设置里面看下:
  之后重启服务器,进修复模式。
  进来之后,有几个选项。
  · Install CentOS Linux 7 in basic graphics mode
  这个选项可让您在安装程序无法为您的显卡载入正确的驱动程序的情况下使用图形模式安装。
  · Rescue a CentOS Linux system
  当安装完成的CentOS无法开机时,选择此项目进行修复。
  · Run a memory test
  运行内存测试
  Boot from local drive
  从本地磁盘引导。
  我们这肯定是修复系统,所以选择Rescue进入。
  这里解释很清楚,修复就是通过把原来的系统挂载。在/mnt/sysimage下面,然后你可以做任何操作,我们直接选1,就是继续这个操作,2是以只读的方式,因为我这里是命令删掉了,我要拷贝文件,所以肯定不能选只读,其他两个选型就不多说了。
  现在就进入救援模式了,我们看下原来的系统,也就是/mnt/sysimage下面,是不是我原来的系统。
  可以看到,正是我自己的系统文件,bin目录也确实没有,我们现在做修复,把现在的/usr/bin下的文件拷贝过去,并重新创建/bin软链。
  拷贝完之后,关机,把光盘弹出,重新启动进入系统,重启之后会做一次文件系统的恢复,需要比较长的时间,耐心等着就好。
  重启之后,即可登录系统,正常使用命令,不过如果之前有安装应用的话,因为这里只是从镜像中复制了系统基础命令,安装后的应用命令没办法恢复了。
  仅作为一个思路,如果有系统类问题,可以通过这样的方式进行修复。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号