Linux-CP命令是否会覆盖打开的文件


1

我想知道是否以CP或MV命令为根目录将文件复制到新目录,该目录已经包含该文件并且当前已由另一个用户打开,那么该操作将成功执行还是会被阻止?已在使用中?

我曾尝试在VM上进行测试,并以root身份覆盖了一个文件,该文件也在另一个终端窗口中以root身份打开,但确实成功了,但我想知道这是否仅是因为它是同一用户。

如果Windows计算机上的某人通过SMB共享打开文件,则我的具体情况实际上是根覆盖文件。我目前无法以这种方式进行测试。

如果打开文件后它不会成功,那么如果我将其设置为仅被所有接受root用户读取的文件怎么办?

更多信息:

我正在使用一个简单的系统来创建包含给定月份所有订单的csv文件,并在收到新订单时将其添加到文件末尾。我和root用户(运行php文件的cronjob)将是唯一需要编辑文件的人。

但是,其他人的确会查看它们以不时查找特定的订单。目前,我手动编辑文件,如果其他用户打开了文件,则无法将其保存到文件中,因此,我想知道如果将它们存储在Linux计算机上并且由root用户进行编辑,是否会遇到相同的问题。


在Ubuntu上经过测试,cp并且mv将覆盖打开的文件,其中包括一个被写入。我必须假设他们O_EXCL在打开任何一个目标文件源时都没有使用。我认为您的编辑器正在执行此操作。其他编辑器也许可以打开文件-如果不能,则可以cp FilePath FilePath.tmp编辑FilePath.tmpmv FilePath.tmp FilePath
AFH

Answers:


1

是的,cp和mv将覆盖打开的文件。也许您可以使用类似Git之类的东西来研究版本控制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.