长时间的运维,总会遇到各种棘手的问题。linux虽然不像windowsserver那样容易出现蓝屏和启动失败的系统问题,但是出现系统级的故障也不是没有可能,比如今天群里有个小伙伴遇到了环境变量的问题,导致大部分命令无法使用,临时修改的环境变量没有生效。以上环境都得重新搭建,当然不是最好的选择。其实对于系统层面的问题,不管是windows还是linux,都有一个简单的办法,就是镜像修复。windows和linux都提供了通过镜像修复系统的功能。直接用一个虚拟机和CentOS7系统做一个简单的演示工具:演示和修复Hyper-v/CentOS7镜像,我得先挂系统,所以先做一个快照,快照完成,很多人都做过运行,rm-rf,删除/bin目录下的所有命令有人说删除bin目录后,还可以用whereis查看ls命令,会发现/usr下也有ls命令/bin目录。在CentOS6之前,/usr/bin和/bin是分开的。/bin下是系统级命令。/usr/bin下是应用程序安装后的用户级和可执行命令。CentOS7之后,/bin目录变成了/usr/bin目录下的软链接,两者合并,所以上面删掉的就是软链接。然后,再次删除/usr/bin命令,killok。我完美的玩了rm-rf,所有的命令都无法执行。,开始修复,这里使用的是hyper-v虚拟机,所以把image挂载到cd/dvd后,重启挂载,可以在settings里勾选,重启server。进入修复模式后,有几个选项InstallCentOSLinux7inbasicgraphicsmode此选项允许您在安装程序无法为您的显卡加载正确的驱动程序时使用图形模式安装RescueaCentOSLinuxsystem。当安装的CentOS无法启动时,选择此项继续RepairRunamemorytestRunamemorytestBootfromlocaldriveGuideusfromthelocaldisk这肯定是修复系统,所以选择Rescue进入这里,解释很清除。修复就是把原来的系统挂载到/mnt/sysimage下,然后就可以随便操作了,我们直接选择1继续这个操作,2是只读的,因为我把这里的命令删掉了,我要复制文件,所以一定不要选择只读,另外两个选项我就不多说了.进入rescue模式,再看看原来的系统,也就是/mnt/sysimage下,能不能看到我原来的系统,是我自己的系统文件,bin目录确实没有。现在修复一下,把当前/usr/bin下的文件copy,重新创建/bin软链接。拷贝完成后,关机,弹出光盘,重启进入系统。重启后会恢复文件系统,这个过程会比较长。耐心等待吧。重启后即可正常登录系统并使用命令。但是,如果您之前安装过该应用程序,由于基本的系统命令只是从镜像中复制过来的,所以安装后的应用程序命令是无法恢复的。这只是一个想法,如果系统有问题,可以通过这种方式修复本文转载请联系运维院公众号。
