rm -rf /bin 会发生什么?

rm -rf /bin 会发生什么?

rm -rf /bin

命令很简单 , 删除linux根目录下bin目录


今天在清理项目垃圾文件的时候不小心将执行路径输错。。。 和往常一样执行很成功。。。 然后进入相关目录 执行ll查看文件还在不,告诉我 -bash: ls: command not found , 然后-bash: mkdir: command not found 然后就意识到自己悲剧了。。。


后果

所有/bin下的shell命令无法执行,例如ls mkdir chmod tar ssh login scp。。。也就是想ssh远程登录也不行了。


解决办法

**想太多?有办法?准备离职走人吧!!! **

额 其实事情也没那么严重,并不是生产环境,还是可以随便折腾的,哈哈哈(安慰自己。。。)

再次查看事故现场。发现仅有一个ssh还连接着 ,这可是救命稻草哦

开始是想着使用scp从另外一个服务器上拷贝一份bin过来,不就万事大吉吗?哈哈

然后-bash: scp: command not found ,瞬间绝望!

其实这个思路是正确的先把文件恢复,怎么恢复呢?当然是从另外一个服务器上拷贝一份,但是没有scp怎么办呢?对,没错,还有网络传输wget,这货不在bin目录下,这或许就是为我这种脑残设计的吧!

然后就在另外一个服务器用nginx搭建了简单的http服务,在事故机器根路径下wget http://xxx/bin.tar.gz

很顺利,解压tar -zxvf bin.tar.gz

嗯 文件都恢复了 好开心!

再次执行ll 或者ls的时候发现

执行chmod -R 755 bin

才想起来wget是不带权限的,解压后的文件都没有执行权限
这下GG咯 chmod本身都没权限

想着应该有办法的,(我应该不是第一个误删bin的脑残吧)

继续Google,发现有个货说可以使用perl -e 方式执行系统命令

然后尝试

很顺利。。。

大概原理应该是perl中本身存在自己的赋权限的函数,所以通过perl可以给方法权限。。。。。

还是展示下成果吧
ll

教训

  1. rm -rf的时候千万千万小心,linux没有后悔药 ,习惯了window的用户可能无法理解为啥不弄回收站之类的东西。。
  2. 记住,你永远不是第一个这么脑残的人,遇到事情总会有办法解决的。
  3. 尽量不用root账户操作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax