我想知道是否以CP或MV命令为根目录将文件复制到新目录,该目录已经包含该文件并且当前已由另一个用户打开,那么该操作将成功执行还是会被阻止?已在使用中?
我曾尝试在VM上进行测试,并以root身份覆盖了一个文件,该文件也在另一个终端窗口中以root身份打开,但确实成功了,但我想知道这是否仅是因为它是同一用户。
如果Windows计算机上的某人通过SMB共享打开文件,则我的具体情况实际上是根覆盖文件。我目前无法以这种方式进行测试。
如果打开文件后它不会成功,那么如果我将其设置为仅被所有接受root用户读取的文件怎么办?
更多信息:
我正在使用一个简单的系统来创建包含给定月份所有订单的csv文件,并在收到新订单时将其添加到文件末尾。我和root用户(运行php文件的cronjob)将是唯一需要编辑文件的人。
但是,其他人的确会查看它们以不时查找特定的订单。目前,我手动编辑文件,如果其他用户打开了文件,则无法将其保存到文件中,因此,我想知道如果将它们存储在Linux计算机上并且由root用户进行编辑,是否会遇到相同的问题。
cp
并且mv
将覆盖打开的文件,其中包括一个被写入。我必须假设他们O_EXCL
在打开任何一个目标文件源时都没有使用。我认为您的编辑器正在执行此操作。其他编辑器也许可以打开文件-如果不能,则可以cp FilePath FilePath.tmp
编辑FilePath.tmp
和mv FilePath.tmp FilePath
。