不小心敲了rm -rf / 后反应是怎样的?:某通信公司,HK某运营商项目,某中间件产品,实时系统,三期割接上线。因为一期二期已经上线,现网系统已经承载C网200w用:
某通信公司,HK某运营商项目,某中间件产品,实时系统,三期割接上线。
因为一期二期已经上线,现网系统已经承载C网200w用户。
连续两晚通宵,终于成功割接,系统运行正常。
一觉醒来,下午四点,业务高峰,登录系统检查状态,运行正常,但发现系统后台目录下有11个昨晚操作留下临时文件,一共都不到1M的样子。完美主义者+强迫症患者。没经客户允许,打算直接删除。好了,事情来了。
业务操作员,应用后台home目录下,rm -rf ./*XXXX* 不知道怎么敲成了rm -rf ./* XXXX* 。多了个空格。
rm 3秒没完成,第一反应,麻蛋,不对劲,貌似这次删除时间有点长。
随即系统立即报出rm: cannot remove directory `./mdsfiles': Device or resource busy,
X,TMD,这可是生产环境啊,完了,出事了,赶紧一顿 Ctrl+C,12个^C,rm操作取消。ls查看文件,不用细看就知道明显少了好多文件。
下图就是SecureCRT记录的当时的操作日志。(16:15:08的操作是Tab,不是回车,16:15:11的操作才是真正的rm操作)
其实之前身边已经有人因为rm文件出过事故,自己也曾多次脑补过这个场景,也因为好奇使用root用户在测试镜像下搞过rm -rf /。
但第一时间还是懵了。也许是HK的空调太低,并没有惊出一身汗,只是手有点抖。
赶紧登录Web前台监控系统状态,发现监控进程自己都已经挂掉了,业务进程状态无法查询。不行,要Hold不住。
通知身边同事,和PM汇报上升问题,看看能不能让客户上游请求系统先暂时自己缓存请求,给我们半小时时间恢复之后再下发。后来据说当时PM正在和客户开会,和客户说了我们系统出了问题,客户脸都白了,本想联系他主管,但又觉得不够,直接打了电话给主管的主管,说赶紧下发紧急告警,启动应急预案。
同时我这边Web前台查询请求状态,发现还在处理业务请求。数据库查询请求数量,发现动态增减,并无明显积压。感觉主进程应该暂时还在,我们应该还可以自己Hold一会。赶紧让同事和PM说让客户先不要操作,我们自己再压一会儿。PM和正在给领导打电话的客户谎称是我们自己看错了。客户又在电话里大喊告警解除。有种电影里发射核弹的感觉,很遗憾当时没在场。如果启动应急预案,估计可以去客户官网看公告了。
凭直觉直接脚本拉起监控进程,命令敲完一半,Tab联想不出来,才发现启动脚本都已经删没了,Fxxx。因为生产环境为双机,本来可以切换到备机,但双机管理软件因为这次上线已经暂时冻结,现在恢复管理未必成功,如果中间出现问题无法完全启动将会更加麻烦,而且切换过程中必定存在业务中断,现在是业务高峰,所以不到万不得已,绝对不能切!
全量下载备机环境,并和主机比对,批量上传缺失文件,更新权限777。脚本拉起监控进程,启动正常。重新登录web前台,已经可以查看系统状态,发现两个主进程的确还在。
初步Hold住,赶紧联系机关R&D,手机热点共享网络,远程共享桌面,逐一反馈修复之后后台目录下文件信息,确认主要文件都在,并评估部分缺失文件及本次操作影响。
目前系统状态基本正常,CPU占用率较高,原因还需定位,预计后续可能会出现报错,但应该不至于影响业务。再次和PM汇报情况,但PM已经气得不接我电话了...
误删文件之后,系统依旧坚挺,这应该是这次不幸中的万幸,一直被我们抱怨不靠谱的新系统,这次终于靠谱了一把,也救了我一命。也幸好内部消化,否则饭碗肯定不保了。
现在监控系统状态中,感觉应该趁加班写个脚本,以后更安全的调用rm。
因为当时是业务高峰,且并没有有效定位思路,所以虽然CPU已经飙到300+%,但依旧决定进一步监控看下。当天夜里CPU使用率居高不下,但一切正常。第二天凌晨两点,爬起来监控,发现Web前台监控进程又挂了。深深呼了一口气,冷静。VPN远程登录服务器,看了下日志,有磁盘空间不足的报错。df一下,果然磁盘空间不足。du一下发现,是系统日志目录过大,后台一晚上打了几百G的日志。拉一个下来,同时删除其余日志文件。再次手动拉起监控进程,系统监控页面恢复,日志仍在迅速增长。
看了下拉下来的日志,发现全是x个文件请求监控线程的报错,报请求路径不存在。登上服务器看了下,发现文件请求目录的确不存在。下午恢复的时候,只恢复了主路径,并未恢复子路径(因为子路径是系统启动时自动创建的,备机环境并无子路径)。mkdir手动创建目录。ll日志不再迅速增长,tail一下可以看到正常请求日志。感觉CPU使用率居高不下的原因肯定也是因为这个,登录Web前台,发现果然已经降到80%左右。
夜深人静,一个人偷偷摸摸擦屁股的感觉真不好。
睡觉。
第二天早上起来,VPN监控,系统状态正常,请求处理正常。七点,背着笔记本去见异地的女友。中午登录系统检查状态的时候发现,进程一切正常,CPU使用率在30%左右,的确不高,但是这低得也有点夸张啊。紧接着查询了下请求状态。妹的,从早上8点50之后就再也没有新请求过来。这他妹的少说也丢了几十万条的请求了。完了,饭碗又不保了。正打算联系客户,客户的WhatsApp就过来了。很奇怪的是,客户语焉不详,感觉似乎是早上很快就发现了,只是一直不确定是不是他们自己请求系统(客户自己开发,和我们同时上线)的问题,所以直到下午才找到我们,这帮孙子...现在要拉上我们一起联合定位,定位个鬼,赶紧力荐客户重启。反正现在环境文件已经完全恢复,只要重启,昨天下午删除操作的一切可能的隐患都可以规避掉。
结果是重启之后果然就好了。后续定位这次的工单丢失4个小时是因为客户自己请求系统的Bug导致的,和那次误删没关系。但是两件事碰巧先后发生,真的是不得不让人紧张。突然想到了我“岳父”的一段话:有时候,“虚惊一场”这四个字是人世间最美好的成语,比起什么兴高采烈,五彩缤纷,一帆风顺都要美好百倍。你可懂什么叫失去。这些时间来,更觉如此。愿悲伤恐惧能够过去,事外之人更懂珍惜。
终:后来在不久之后的一次和客户申请的正式升级操作过程中已将系统全部重新部署,现在已经稳定运行。我也于2016年7月结束14个月的HK项目交付工作,外人看来的“功成身退”,只有我自己知道这段日子有多难熬。
不知道是不是因为这两天的gitlab rm -rf事故让大家对这个问题产生了兴趣。其实这次经历很大一部分原因在于我自己的手残,而且处理的方式也并无什么值得借鉴之处,所以这么高的点赞量让我更加惭愧。
于心有愧,所以我觉得应该和大家分享自己的一些思考...
1.工作的时候尽量保持清醒,进行高危操作的时候一定要保持清醒
2.建议每次执行rm操作前,核对一遍之后再敲回车(虽然这个动作可能已经成为很多程序员神经回路的一部分)。如有必要,可对rm命令设置alias,设置别名为mv到指定目录,crontab定时清理
3.做好用户权限控制,root不公开,使用低权限业务用户进行日常操作。需要高权限使用密码sudo (当时使用的就是业务用户,操作的是应用后台根目录,误删文件的数量,用途和影响至少都大致了解,风险可控)
4.操作窗口之外,不要乱动生产,我现在觉得最好登都不要登
这是删库跑路的节奏啊!主要看你是在哪儿操作的?如果说你在业务系统里面敲得,兄弟如果真敲了还回车了,那兄弟安好?你这是想删库跑路吗?你如果敲了rm -rf没按回车只能说你很棒!但是如果说你只是在无关痛痒的系统里面或者说没有任何影响的系统里做了此操作,只能说随你怎么玩!无论如何rm-rf尽量少敲为妙!我们公司一个同事就因为在客户生产系统来了个rm-rf直接给公司带来损失70万,所以谨慎操作为妙!
1. 后背发凉,大脑瞬间空白3秒钟,不知所措。
2. 左顾右盼,查看四下有无人关注
3.收拾包袱,溜之大吉
linux系统如果你登录的账号有root权限,那么执行了rm -rf /,部分版本会有提示,不是十分危险,如果执行了rm -rf /* 那你就跑路吧!
Ctrl+c
没一点问题啊!敲就敲了。
这是一个强制删除的命令对于LInux平台才有用,我一Windows平台才不担心这个呢。
其次作为专业化的运维来讲,目录都是有权限的,普通用户根本无权去删除那些重要的目录。算了不想再写了,这问题没啥水平。
我只想补充的是rm 命令是可以通过运维平台拦截掉的。
改一下shell,用mv替换rf,这样即使执行rf,也只是放到临时目录,要恢复也很容易。
删库,准备跑路吧
我敲过,死不承认就好了,就说电脑坏了
一天中什么时候运动减肥效果好抓 小孩能不能练哑铃多大的孩子适合 小孩嘴唇起皮怎么办怎样才能预防 孩子的罗圈腿是怎么形成的三大因 孩子早恋怎么办如何有效疏导孩子 医生婆婆称自己专业孩子的事必须 儿子成人礼送什么礼物好呢给你孩 有孩子的夫妻千万不要离婚对于孩 小孩千万别让老人带的说法正确吗 自卑缺乏安全感的孩子怎么改善 怎么让孩子开口说话 这几个方法 怎么让孩子吃饭 教你如何让孩子 怎么管教不听话的孩子 家长首先 顽皮的孩子怎么管教的 这些方法 叛逆期的孩子怎么管教 引导孩子 孩子性格软弱怎么办 懦弱的性格 孩子性格偏激怎么办 孩子性格偏 孩子性格固执怎么办 家长们不妨 爱惹事的孩子怎么管教 不妨试试 养育优秀的孩子具备特征,家长要 高考数学难出新天际,可有的孩子 “做胎教”和“不做胎教”的孩子 花费十几万只考了302分 妈妈觉得 甘肃作弊考生留下来的疑团,是怎 一举夺魁!高三学生离校时,校领 高考钉子户:26次参加高考,今年 D2809次列车因泥石流脱线!此类 “女儿16岁,学校宿舍里分娩了” 扭曲邪门的内容,频频出现在教科 川渝地区几所大学实力很牛!四川