Yve*_*ves 0 filesystems file-descriptors
我使用 Linux 有一段时间了,今天我发现了一件有趣的事情。
说我有一个无限任务,它不断将字符串写入文件。
在某个时刻,我删除了该文件,几秒钟后,我重新创建了该文件。令我惊讶的是,我不会丢失任何字符串。
这是我使用 bash 脚本进行测试的方法:
#!/bin/bash
i=0
while :
do
echo ${i}>>./target
sleep 1
i=$((i+1))
done
Run Code Online (Sandbox Code Playgroud)
我执行这个脚本,持续4秒,我可以得到一个文件名target
,其中包含0
,1
,2
和3
。然后我删除文件target
。我执行touch target
以在 5 秒内创建一个新文件。令我惊讶的是,在新文件中,我立即获得了内容4
, 5
, 6
, 7
, 8
。
那么为什么我可以取回所有在删除文件时生成的字符串呢?
因为touch target
不是在这个实例中创建文件。在>>
必要时外壳运营商追加到指定的文件,创建。您删除“3”之后的文件,然后echo 4>>./target
创建它。
删除文件后尝试列出该文件:
rm target; sleep 1; ls -l target
Run Code Online (Sandbox Code Playgroud)
你会看到它被重新创建了。