• linux所有命令都无法使用,rm f * 删除根目录


    【1】故障情况

    (1.1)误删文件

      在根目录下,有2个文件,node_exporter 和 node_exporter_start.sh

      我想把这2个文件都删掉,小心,生产环境 

    rm -f  node * 

    要命了,多打了一个空格,真实是想  rm -f node* 的啊;

    (1.2)出现问题

      所有命令不能用,错误提示信息如下图:

        

        

      我以为所有的东西都被我干掉了,虽然有点疑惑,在我的理解中,rm -f *,会删掉当前目录所有文件。

      但文件夹及文件夹下所有文件是不会被删除的,当时我看命令都用不了啦,直接就慌了。

      以为虽然保留了文件夹,但可能文件被我删除了,不然怎么所有命令都用不了,登录也不能登录了;

    (1.3)慌乱之下的处理措施

      直接找业务确定服务器的重要程度,东西多少;然后利用快照备份进行快照恢复了;  

    【2】模拟复现、解决

    (2.1)查看 / 根目录

      

    (2.2)删除操作,复现故障

    如下图,我们的 rm * 根本就不会删除所有的文件,只会删除那4个文件。所有文件夹及文件夹目录里的数据都还在。

      

    产生现象:和我们生产环境的误删操作一样,复现了

      

       

    (2.3)冷静分析情况

      我们只是删除了链接(见2.2 rm * 的交互式提示),但目前不是了解很深入,到底是软链接还是硬链接。

      如果是硬链接、那就算只是删除了这4个目录,那也基本没救了。如果是软链接,那重新加不就完事了。

    我们查看该链接指向的目录,文件是否存在,如下图,发现文件还是存在;

      

    那就表示,删除的是软链接,但因为环境变量、很多命令、文件等事项(最吓人的就是只有当前窗口还可以在,其他无法登录了),引用的是这个软链接目录,所以各种报错。

    (2.4)解决办法

    那就把软链接加回来即可嘛;

    如下图,但我们发现,还是报错,要先恢复 /lib64才行;那我们ls命令不能用了,怎么把软链接加回来啊

        

    百度了一下,发现 /usr/sbin 下面还有一个 sln,也是软链接的命令,救命稻草来了;

    就根据这个命令,一个一个加回去

    /usr/sbin/sln /usr/lib64 /lib64
    /usr/sbin/sln /usr/sbin /sbin
    /usr/sbin/sln /usr/bin /bin
    /usr/sbin/sln /usr/lib /lib

      

     至此,问题解决; ls/ln/touch 等等所有命令也都能用了;

    复制会话连接也能连了,mysql登录了也没有什么问题。

      

    【总结与反思】

       本次故障是由于本人误操作导致,总体又因为很慌并没有冷静的思考很好的解决。

    反思:

      1、遇到故障太慌乱,思路受限。后续应该立马强制自己冷静下来,给自己几分钟来想一下情况和方案。

      2、生产环境操作太不小心,不应该在  rm 操作时即不小心、又加 -f 参数。后续要多提高警惕,保持对生产环境的敬畏之心。

      3、基础不够牢,要是深入了解 linux,就不会不确定本次误操作的影响范围。

        若是知道只是删除了几个软链接(核心软链接也会导致很多包、很多程序无法运行,但终究会知道文件、数据是不会丢的),那也不会那么慌那么着急。

  • 相关阅读:
    PAT 1053 住房空置率
    PAT 1078 字符串压缩与解压
    PAT 1024 科学计数法
    HDU 2078 复习时间
    HDU 2065 "红色病毒"问题
    网络协议分析
    多线程同步
    多线程程序设计
    消息队列通讯
    共享内存通讯
  • 原文地址:https://www.cnblogs.com/gered/p/16881561.html
Copyright © 2020-2023  润新知