我有一个执行此操作的脚本:
rm -rf "$test_dir" && sync && mkdir -p "$test_dir"
unzip -qq "$zip" -d "$test_dir"
# compile and run some stuff, diff some files...
evince "$pdf" 2>/dev/null # $pdf is a path inside the mentioned folder $test_dir
echo "[Next]..."
read
# then it goes to the next zip, and do the same again.
A.zip
,然后调用下一个(在 zip 文件列表中)B.zip
。当解压文件夹已经被删除,重新创建,轮到B.zip时,我cat一个文本文件,并在evince中打开pdf。Evince 显示正确的 pdfB.zip
一两秒钟。
之后,evince 重新加载文档,并显示来自A.zip
.
如果我再次手动打开 pdf,它实际上是进来的A.zip
而不是进来的B.zip
(因此 evince 只是打开新文件)。
如果我再次手动 cat 文本文件,内容不是最后在终端注册的那只猫(在 中的那一只B.zip
),而是A.zip
我怀疑不知何故,文件夹本身(或其内容)正在从删除中恢复过来。
以前,我删除了“$test_dir”的内容,而不是目录本身。这个问题经常出现。然后我决定删除该文件夹并重新安装mkdir
。这似乎解决了它。但现在我又看到了这个问题。
我尝试sync
在之后立即添加一个命令,rm -rf
以便进入磁盘。问题仍然存在。
sleep
删除后我试了一下。问题仍然存在。
我在网上看到过几个类似的问题,但都涉及到一些其他的过程,docker,或者别的什么。我使用的文件夹只是我家中的一个目录。除了我的脚本之外,没有任何进程在上面运行任何特殊的东西([更新] 实际上有一个,请参阅答案)
我已经检查过了,我没有在脚本中的任何其他地方解压任何东西。
我找到了责任人!它是 MegaSync 应用程序。它在后台运行,不知何故,在同步所有文件时,它会带回刚刚删除的文件。我关闭它,问题解决了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句