当前位置: 首页 > news >正文

记某同事的两次误操作导致Linux瘫痪

我有一个同事, 有两次在项目组服务器上误操作, 差点导致整个Linux服务器报废

第一次问题:

问题复现:

  1. 在/data/hadoop 下有一个usr的目录, 为垃圾目录(rpm包解压后产生的)

  2. 同事想 删除 ./usr, 但是还好没用 rm -rf, 而是用的 mv /usr /tmp/trash

    注意, ./usr 被打成了 /usr, 导致核心目录 /usr 移到了 /tmp/usr

  3. 再使用 ls、vim、cat 都发现命令用不了了, 只有原生的 cd、pwd、export 这些命令才能用

    但是按 Table 键还是可以补全的来 代替 ls

    在这里插入图片描述

  4. 你肯定想着,用上 绝对路径 是不是就ok了?

    不,不行,会报 /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory 的错误

    在这里插入图片描述

  5. 那 export /tmp/usr/bin 到 PATH 环境变量呢?

    照样不行, 这样会和用 绝对路径 的方法 报同样错误

    在这里插入图片描述

  6. 更恐怖的, ssh命令也用不了, 意味着现在不能使用新的 XShell 重新连接到服务器了,

    在这里插入图片描述

    一旦你现在已经连上的 Xshell 也断开连接了, 那就再也连不上 Linux 了,

    公司的 VPN 有最大连接时长限制, 况且当时同事是 先连公司wifi 再连公司VPN 再连访问谷歌的VPN, 这三者串联, 只要任一处断了, 那就再也连不上 Linux 了,

    就只能去某个山洞里的机房才能操控 Linux 物理机了

解决办法:

  • 报错 /lib64/ld-linux-x86-64.so.2 找不到是因为 /lib64软链接指向了 /usr/lib64, 但现在 /usr都被移动了, 那么 lib64 肯定也被移动了, 则软链接失效

使用这个命令:

# ld-linux-x86-64.so.2的全路径
# --library-path 指定 lib64 库的位置
# mv的全路径
# 把 /tmp/usr 移动到 / 下
/tmp/usr/lib64/ld-linux-x86-64.so.2   --library-path   /tmp/usr/lib64   /tmp/usr/bin/mv   /tmp/usr   /

然后恢复之前的 PATH 变量, 一切均恢复正常

在这里插入图片描述

第二次问题:

同事想 rm -r /opt/sqoop,

却不小心多打了一个空格 打成了 rm -r /opt /sqoop,

结果导致整个/opt目录全被删了

经验总结:

在删除文件时, 千万别用 rm, 那样一旦误操作就完了; 但如果是 mv 误操作的话, 或许还可以抢救一下

可以建立一个 /tmp/trash, 以后用 mv 1.txt /tmp/trash 代替 rm -rf 1.txt

等到很久后 /tmp/trash 很大了, 再仔细用 rm 清理下 /tmp/trash

其他:

> 也要慎用, > 是覆盖某个文件, 一旦误操作了 那么旧文件内容就没法恢复了

相关文章:

  • 初识OpenGL (-)纹理过滤(Texture Filtering)
  • ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(3)
  • wsl安装gpu版mindspore(二)
  • 输出总结是成长的开始
  • [RK3568 Android11] Binder通信整体框架
  • 【uiautomation】获取微信好友名单,可指定标签 全部
  • VAPS XT开发入门教程07:表元素(TableElements)介绍
  • 一文带你了解电感的5大损耗
  • C语言for循环必备练习题
  • Optimization of DQN
  • 猿创征文|微软出品效率神器PowerToys,太实用了
  • Arduino框架下ESP32/8266使用PROGMEM功能将数据存储到flash中的使用规范
  • 并查集(路径压缩)
  • 防火墙实验二——实现域间、域内双向NAT、双机热备实验
  • 【Django】REST_Framework框架——视图集ViewSet和ModelViewSet源码解析
  • @angular/forms 源码解析之双向绑定
  • EventListener原理
  • IndexedDB
  • JavaScript设计模式与开发实践系列之策略模式
  • PAT A1120
  • python大佬养成计划----difflib模块
  • ReactNativeweexDeviceOne对比
  • springboot_database项目介绍
  • Spring框架之我见(三)——IOC、AOP
  • SQLServer之索引简介
  • 测试开发系类之接口自动化测试
  • 初识MongoDB分片
  • 多线程 start 和 run 方法到底有什么区别?
  • 机器学习 vs. 深度学习
  • 记一次和乔布斯合作最难忘的经历
  • 自定义函数
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ###项目技术发展史
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (day6) 319. 灯泡开关
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (力扣)1314.矩阵区域和
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • 、写入Shellcode到注册表上线
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net访问oracle数据库性能问题
  • @javax.ws.rs Webservice注解
  • @ModelAttribute使用详解
  • @Responsebody与@RequestBody
  • [ JavaScript ] JSON方法
  • [14]内置对象
  • [20171113]修改表结构删除列相关问题4.txt
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [android] 看博客学习hashCode()和equals()