zl程序教程

您现在的位置是:首页 >  其它

当前栏目

rm -rf /* 或/bin/目录被删除补救 /bin/sh: bad interpreter: No such file or directory

删除 目录 File No or Directory bin sh
2023-09-11 14:16:33 时间

一、踩坑过程:

着急的同学可以直接跳到第二部分“解决办法”。

对,是我。今天的我不配自称一个工作多年的互联网人(大哭)。

其实早知道rm -rf /*这个命令的毁灭性,所以以往用rm -rf的时候都很谨慎,今天手比脑子快了。本想删除代码路径下的代码重新拉取,结果命令里多个斜杠。。。在我1s内就意识到问题的严重性并立即执行ctrl+c的时候还是晚了。

先是发现基本的ls等命令用不了,修改了环境变量$PATH(命令export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin )后可以了。

但执行mvn clean的时候再次提示:-bash: /usr/bin/mvn: /bin/sh: bad interpreter: No such file or directory

感觉到不妙,新开窗口通过ssh连接服务器,果真连接不上了。。。

以为sshd服务失败了,执行service sshd start,提示:-bash: /usr/sbin/service: /bin/sh: bad interpreter: No such file or directory

知道问题的源头是rm -rf /*(这个命令就是告诉机器自我毁灭吧,为了防止AI不受人类控制么?),按照这个查,边翻网页边觉得被嘲笑且被自己蠢到了。看资料后明白是因为这个毁灭命令删除了服务器的/bin文件,于是好多bash命令就都用不了了。解决办法就是恢复bin目录。

另附:-bash: XXX: XXX: bad interpreter: No such file or directory类似的问题的原因有两种:

1. 环境变量,将要运行的服务的运行程序目录加到环境变量里

2. 是不是把/bin删没了。。。

二、解决办法:

适用范围:

1. 问题服务器A的连接还没断,例如还通过ssh连着

2. 有跟服务器B同等配置的linux可获取bin目录内容

步骤:

1. 连接服务器B,将/bin目录下的内容打包

cd /
tar cvf bin.tar bin

2. 在服务器B通过python的SimpleHTTPServer共享目录

python -m SimpleHTTPServer

参考:https://www.cnblogs.com/zxingwork/p/10837218.html

3. 在问题服务器A上通过wget获取bin.tar,然后解压

cd /

wget http://X.X.X.X:8000/bin.tar

tar -xvf bin.tar

中间尝试了scp、nc、rsync等办法都不行,因为这些都依赖sshd服务,而此时这台机器的sshd服务已不可用。

wget的思路简直是神来之笔,谢谢大神!大神还遇到了tar命令不可用等复杂情况,可参考:https://blog.csdn.net/weixin_30484247/article/details/97061338

 

不敢断连服务器,利用两个小时把问题解决了,感觉我又站起来了,一种“这种程序员死穴都被我解决了,以后还有啥问题搞不定?!(不是,划掉)”的感觉。