MySQL百一题库_「灵魂拷问」MySQL面试高频一百问(工程师方向)
前言
每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵。
那么如果真的删除了不该删除的文件,比如数据库、日志或执行文件,咋办呢?欲知后事如何,请仔细看完本篇文章。
模拟场景
1、删除
误删除服务器目录/root/selenium/Spider下的MySql.Data.dll文件:
> rm -f /root/selenium/Spider/MySql.Data.dll
> ll /root/selenium/Spider/MySql.Data.dll
ls: cannot access /root/selenium/Spider/MySql.Data.dll: No such file or directory
2、恢复
(1)、使用lsof命令查看当前是否有进程打开/root/selenium/Spider/MySql.Data.dll文件:
> lsof | grep /root/selenium/Spider/MySql.Data.dll
从上面可以看出,当前文件状态为已删除(deleted)。
(2)、查看是否存在恢复数据:/proc/13067/fd:进程操作的文件描述符目录。86:文件描述符。
> cat /proc/13067/fd/86
(3)、使用I/O重定向恢复文件
> cat /proc/23778/fd/86 > /root/selenium/Spider/MySql.Data.dll
> ls -l /root/selenium/Spider/MySql.Data.dll
-rw-r--r-- 1 root root 702464 Feb 10 12:03 /root/selenium/Spider/MySql.Data.dll
重新运行程序:
说明恢复的文件没有问题。
刨根问底
前面的模拟场景演示了恢复文件的整个过程,那么原理是什么,在什么情况下,文件才是可恢复的。
在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息。
当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。
总结
如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。
MySQL百一题库_「灵魂拷问」MySQL面试高频一百问(工程师方向)相关推荐
- MySQL百一题库_数据库应用MySQL试题题目及答案,课程2020最新期末考试题库,章节测验答案...
一台原价2000元的洗衣机,先降价10%&2bsp;后来又提价10%,这时价格还是2000元.______.(判断对错) 淘气有中u本课外书,笑笑有u0本课外书.求淘气的课外书比笑笑少百分之几 ...
- ctf入门题库_「ctf比赛」web安全CTF比赛习题(初级) - seo实验室
ctf比赛 一.Robot 访问URL,可以看到一张骚气十足的图片,然后就什么都没了...没了... 不可能啊,一张骚图片就想欺骗小编,想的太美(长得丑了) 题目说明写的是robot,想想多半是有猫腻 ...
- [灵魂拷问]MySQL面试高频100问(工程师方向)
前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...
- mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法
绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...
- MySQL 面试高频一百问
你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 juejin.cn/post/6844903894351347719 推荐:https://www ...
- 东软mysql期末题库_东软大三上学期实训笔记-mysql篇Day5完结篇
mysql篇Day5完结篇 知识点讲解: 1.视图:view (1) 虚拟表.和普通表一样使用 (2) 作用: ① 视图存储在数据库中的查询语句.主要作用:安全原因.可以使复杂的查询语句容易理解与使用 ...
- 计算机二级mysql程序设计题库_计算机二级MySQL数据程序设计模拟试题
计算机二级MySQL数据程序设计模拟试题 为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是小编搜索整理的计算机二级MySQL数据程序设计模拟试题,供参考练习,预祝考生们考出自己理想的 ...
- [灵魂拷问]MySQL面试高频一百问
作者:呼延十 链接:https://juejin.im/post/5d351303f265da1bd30596f9 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多, ...
- mysql 隔离级别 快照_「数据库架构」三分钟搞懂事务隔离级别和脏读
重要要点 仅凭ACID或非ACID来思考,还需要知道数据库支持的隔离级别. 标榜为"最终一致"的某些数据库可能返回与任何时间点不一致的结果. 一些数据库提供的隔离级别比您要求的更高 ...
最新文章
- 面试官让我讲讲Unicode,我讲了3秒说没了,面试官说你可真菜
- react 项目实战(六)提取布局组件
- C#调用浏览器的原理及实现浅析
- Silverlight与数据库的三种互操作[源代码]
- Mybatsi注解开发-基础操作
- Spring Session实战3
- python遍历集合_Python 高效遍历 集合所有子集的全组合
- 软件公司怎么定价它们的项目_如何为副项目定价
- c语言一级考试题目第四季度,模拟试题8套
- c语言中整型数组如何初始化,C语言数组空间的初始化详解
- 虚拟机安装Ubuntu无法通过Xshell登录
- Git (13) -- Git 分支 -- 分支的新建与合并
- MIMO技术中的各种增益分析
- 博客园app for xamarin android
- 随机过程(一):泊松过程的详细理解
- 图6——深度遍历无向图
- tenacity发生异常/失败/错误时重试retry机制,Python
- python核心编程 第3版_Python核心编程(第3版)PDF高清晰完整中文版
- Python django 猫咪管理系统
- 阿里大文娱深耕电影赛道,推出多部爆款电影
热门文章
- 介绍一个好用的静态图片合成为 gif 动画的在线网站
- SAP Spartacus ConsentTemplate 数据结构的暴露逻辑
- 一个SAP UI5 TreeTable控件的错误分析
- SAP Spartacus org unit页面的三种focus border及细节讨论
- Spring 基于 Java 的配置 - 如何不用Beans.xml照样描述bean之间的依赖关系
- Angular dependency injection - how injection is parsed
- Change default duration for Fiori Toast
- One Order CLOSING date修改后的执行原理
- Product API buffer
- 如何找到是哪一个进程占用了某个端口号