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,就不会不确定本次误操作的影响范围。

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

 

posted @ 2022-11-11 19:35  郭大侠1  阅读(1563)  评论(0编辑  收藏  举报