Linux用mv移走正在读写的文件会报错吗?

发布于 2022-09-04 22:57:12 字数 309 浏览 34 评论 0

1)在Linux系统中用mv命令移走正在读取文件会怎么样?
比如文件1.txt正在被进程A读取,我用mv命令把1.txt移动到别的目录去,进程A会出错吗?

2)还有mv移走正在写入的文件又会怎么样?
比如文件2.txt正在被进程B写入数据,用mv命令把2.txt移动到别的目录去,进程B会出错吗?

mv移动文件到别的目录有两种情况:
1)移动到同一分区的不同目录内
2)移动到不同分区的不同目录内

以上两种情况的mv移动,会有不同结果吗?

请大神指教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤独患者 2022-09-11 22:57:12

1)如果是在同一个设备相同分区类型,mv的实现是调用rename函数,rename只修改文件名称,不会影响已有的打开这个文件的进程的读写操作;写入的内容会保存在重命名后的文件里。

2)如果不在同一个设备或相同的分区类型,mv操作实际是先将原有文件里的内容copy到新的文件里,然后调用unlink函数;unlink时如果该文件在被使用,不会将文件真正删除,只会将文件名改为空,在所有的对该文件的操作都完成并调用close后该文件才会被真正删除;这种情况下对原有文件的写入操作不会保存在新的文件里。

裸钻 2022-09-11 22:57:12

吃着吃着饭,饭碗被人抢了,能不出事儿吗?

ゞ记忆︶ㄣ 2022-09-11 22:57:12

同一分区没有问题,linux 用的是 inode,只要还有一个进程使用文件,你删掉文件都可以继续读写。有时候误删文件都是根据这个道理去挽救的。
不同分区就会造成不同的 inode,会有奇怪的现象发生。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文