具体来说,我在ubuntu 10.04机器上错误地运行了rm -R /my/dir 。
当我意识到恐怖的时候,几秒钟后,我用Ctrl + C命令迅速杀死了它。 现在看来我没有丢失任何数据。 这可能吗? 在后台发生了什么?
Ctrl + C发送SIGINT信号给进程。
它的默认动作是“exception终止进程”,所以基本上按下Ctrl + C即可中断正在运行的进程
如果你足够快(在进程扫描你的目录结构之前) rm不应该删除任何东西(或者如果没有太多的文件,它可能不会)。
如果/my/dir包含大量目录和文件,初始扫描可能需要一段时间,并且很有可能在只读目录结构的时候设法停止命令。 除此之外,Ctrl + C不提供任何撤消function。
如果按Ctrl + C的速度足够快,不会丢失任何文件,那么您很幸运。 你怎么确定你没有丢失任何文件?
按Ctrl + C将中断删除过程并终止它。 所以,你需要仔细检查你的文件/文件夹,并恢复任何删除的文件。
你很幸运 该进程已收到一个SIGINT ,(通常)杀死该进程。 如果还没有丢失任何数据,那是因为rm命令仍然忙于遍历目录结构,因为它必须开始删除叶子目录中的文件,而不需要其他子目录。