我意外地启动了32个进程(虚拟机上每个内核一个进程),以在两个mv文件系统之间创建一些文件,但只有一些进程成功地在mv‘d中运行:
for i in `seq 1 32`; do
mv /path/to/ext4-1/pattern* /path/to/ext4-2/ &
done当多个进程试图对相同的文件进行mv时,到底会发生什么?
发布于 2015-12-06 00:33:07
同一个文件系统中的mv对于每个文件都是原子的,但是跨文件系统,这是一个更复杂的操作(假设您只移动常规文件,并且最初不存在目的地):
在大多数情况下,如果两个mv进程同时尝试移动同一个文件,它们都会复制数据:首先启动的实例将创建一个文件,第二个实例将删除该文件并创建一个新的文件。然而,如果你运气不好,就有可能丢失数据。例如:
我认为,如果一个文件存在于目标,它将有正确的内容。但正如我们所看到的,文件有可能消失。
https://unix.stackexchange.com/questions/247454
复制相似问题