首页 > 系统相关 >linux所有命令都无法使用,rm -f * 删除根目录

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

时间:2022-11-11 19:46:00浏览次数:50  
标签:文件 sbin 删除 linux usr rm 根目录 链接

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

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

 

标签:文件,sbin,删除,linux,usr,rm,根目录,链接
From: https://www.cnblogs.com/gered/p/16881561.html

相关文章

  • Linux网络通信(线程池和线程池版本的服务器代码)
    线程池介绍线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在......
  • post请求传formdata格式
    constformData=newFormData();fileList.value.forEach(file=>{formData.append('multipartFile',file);});formData.append(......
  • Linux Centos7 部署步骤 mysql
    0.首先查看cpu架构uname-a输出内容中有关键词ARM或aarch64就是ARM架构,有关键词x86_64就是X86架构1.下载mysql8(https://dev.mysql.com/)选择 RedHat......
  • 新手必备的Linux命令
    新手必备的Linux命令,虽然平时大部分工作都是和Java相关的开发,但是每天都会接触Linux系统,尤其是使用了Mac之后,每天都是工作在黑色背景的命令行环境中.自己记忆力不好,......
  • 如何在Linux中查找进程
    大多数Linux用户使用预装的默认系统监控工具来检查内存、CPU使用率等。在Linux中,许多应用程序作为守护进程在系统后台运行,这会消耗更多的系统资源。在Linux中,您可以......
  • 使用final shell 连接使用 ubuntu server linux
    书接上回,VM安装ubuntuserver:https://www.cnblogs.com/runliuv/p/16880599.html1.从https://www.hostbuf.com/下载FinalShellSSH工具,并安装。2.点击左上角文件夹图标,......
  • Linux下(CentOS)下Docker的安装
    Linux下(CentOS)下Docker的安装以及阿里云加速器的配置什么是Docker?Docker是一个开源的应用容器引擎。让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到......
  • Using debugStub to debug a guest linux kernel
    UsingdebugStubtodebugaguestlinuxkernelIamrunningVMwareFusionVersion6.0.2(1398658)IhaveconfiguredthefollowinginmyvmxdebugStub.listen.gue......
  • 将windows目录共享,并linux访问
    设置windows下的共享目录:在windows下,打开网络和共享中心,点击更改高级共享设置选择公用,在密码保护的共享选项中点击关闭密码保护共享选择需要共享的文件夹或磁......
  • 电影推荐系统项目实战:环境配置与安装:-----Linux环境下 ElasticSearch(单节点)环境配置
    1通过WGET下载压缩包:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.2.tar.gz  2.修改Linux配置参数:在文件末尾添加:sudo......