北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

新来的妹子误执行 “rm -rf” !(霍总新来的实生好像是你的夫人完整免费版)

我们组新来的妹子,敲了一条 rm -rf /* ,还不是小目录,是直接在测试环境服务器的根目录——那叫一个刺激啊。

她当时就懵了,人还挺紧张的,说句实话,我刚进公司的时候也干过类似的事,不过没她狠,最多是把自己用户目录全清了,差点把自己的工号给玩没。她这下动静大多了,服务器直接卡死,ssh 也断了。我跟她说先别慌,重启肯定没救了,这种基本就是直接崩了,重装系统吧……

其实很多新手看到 rm -rf ,没什么感觉,甚至很多教程里还写得特简单,搞个脚本一行带过:


Runtime.getRuntime().exec("rm -rf /");

这种语句,真不是给你测试用的。Linux 里边, rm -rf 是递归无脑删, / 就是从根目录开始……一旦带 sudo 权限,系统根本不给你机会反悔,什么日志啊、配置啊、进程啊,几分钟全没了。我们那会儿服务器装了点自动化脚本备份,但你想,系统文件要是全丢了,备份再牛也白搭。

我们组那会儿现场救火,我记得那天小李还在旁边啃鸭脖,结果鸭脖直接掉地上都顾不上捡。他喊我去拉 KVM 屏幕,试图看还能不能抢救一下。其实有时候磁盘还没被占用,可以赶紧 dd 镜像出来,后续再慢慢恢复。不过大多数时候,普通人没这个反应速度。妹子那一刻还以为按 Ctrl+C 能中断,结果发现 rm -rf 根本不是优雅的进程,卡都不卡你。

说到这里啊,这种事故为啥老出,很多人其实没做一个最基础的隔离。比如操作敏感命令的时候,最好限制目录范围,别用 root 去干所有事。像我们后面公司统一改了权限,生产服务器默认账号就没 sudo,操作文件都必须指定绝对路径,干脆连 bash profile 里都给 rm 命令 alias 掉:

alias rm='rm -i'

让你每次删之前都得确认。虽然麻烦,但真能救命。还有就是写脚本一定要判断变量有没有赋值,比如下面这种:

TARGET_DIR="/data/important"
rm -rf "${TARGET_DIR:?}/"

:? 能直接在变量没值时报错退出,这种小习惯有时候比写多少行 try-catch 都管用。

你说妹子以后会不会有心理阴影?肯定有,我跟你说,我当年也是好几个月都不敢在服务器上敲 rm,甚至 rm -rf 都是 copy-paste,然后每次都三遍确认路径。我们组后来还专门做了个小工具,用 Java 写的,就是防误删:

public class SafeDelete {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("请指定要删除的文件或目录");
return;
}
String target = args[0];
if ("/".equals(target) || "/root".equals(target)) {
System.out.println("危险!不能删除根目录或/root目录");
return;
}
File file = new File(target);
if (!file.exists()) {
System.out.println("目标不存在:" + target);
return;
}
// 这里加一层确认
System.out.print("你确定要删除吗?(yes/no): ");
Scanner sc = new Scanner(System.in);
if ("yes".equals(sc.nextLine())) {
delete(file);
System.out.println("删除完成");
} else {
System.out.println("已取消删除");
}
}

private static void delete(File file) {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
delete(f);
}
}
file.delete();
}
}

没啥技术含量,就是靠啰嗦和啰嗦让你再三确认。

对了,这事儿过了以后,组里一哥们说得对,操作系统别让新同学直接全权限登录,最好都在虚拟机、docker 这种隔离环境里练手,实在要线上,rm 这类危险命令直接权限砍掉。像现在很多云服务器都能做快照,实在出事恢复也快。

行了,今天就唠这么多,想起那天妹子事后还请我们喝了奶茶,说再也不想看见 rm 这个命令了。其实每个人成长路上都得被 rm 教做人一回,唉……对了,我还得去查查 Jenkins 昨晚的那个构建为啥又挂了,这破系统怎么老是出幺蛾子,气死个人……

-END -

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言