linux shell 重定向到文件后,删除该文件会发生什么?

1.首先编写一个简单的脚本,内容如下:➜shell>catecho.sh#!/bin/bash#测试>>重定向,文件移动后是否会自动创建新文件whiletr... 1.首先编写一个简单的脚本,内容如下:
➜ shell >cat echo.sh
#!/bin/bash
# 测试 >> 重定向,文件移动后是否会自动创建新文件
while true
do
date
sleep 1;
done;

2. 然后在一个 terminal 中执行下面的命令,该 terminal 记作 TA
➜ shell >bash echo.sh >> tmp.log

3. 在另一个 terminal 中查看日志文件,该 terminal 记作 TB
➜ shell >tail -f tmp.log

4. 再打开一个 terminal,删除或者移动这个日志文件,该 terminal 记作 TC
➜ shell >mv tmp.log tmp.log-bak
➜ shell >rm tmp.log-bak

5. 到此时,TB 中仍能看到实时更新的内容

问题:bash echo.sh >> tmp.log 命令在文件删除后,数据到底去那里了,tmp.log 文件的确删除了吗?
展开
 我来答
良玉小帝
推荐于2016-05-23 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
rm删除的是那个文件的索引,tail已经把索引记录在内存了
脚本也把索引记录在内存了,干掉了索引,文件依然在写,记录一直在被读取,当你都中断,再次读取的时候索引找不到了,的确被删了

linux的rm只是删除索引,文件块依然存在的,下次利用的时候这个文件块会被其他内容覆盖
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式