尝试重命名/删除文件时,linux 是否有文件锁定保护

尝试重命名/删除文件时,linux 是否有文件锁定保护

我有一个 cron 作业,每天都会启动一个新进程。该进程每 5 分钟运行一次并附加到日志文件中。

另一个 cron 作业每 60 分钟运行一次。它获取日志文件中的一些数据,清理它,创建一个新的日志文件。清理后的日志文件将导入到数据库中。 MySQL 会防止重复条目,因此每个新的干净日志文件的前几行都会被忽略。

一天结束时,我只剩下了 24 个已清理的日志文件和一个原始日志文件。

如果我要通过首先将文件重命名为预处理来运行清理脚本,执行我需要执行的操作,然后将其删除,这是否会导致我的第一个 cron 脚本(每 5 次记录到同一个文件)出现任何问题分钟?

我担心的是原始日志文件正在被写入,而另一个 cron 任务正在尝试重命名它。

操作系统:Debian 8

编辑:有趣。 Cron 将写入重命名的文件。

答案1

没有文件锁定机制来保护文件重命名或删除,因为没有必要。在另一个进程打开文件时重命名甚至删除该文件,即使它主动写入和/或读取数据,也是无害的。

打开该文件的进程不会看到任何差异,并且将透明地访问重命名文件的原始数据,甚至也访问“已删除”文件,而不会注意到该文件已被删除。实际删除只会在该进程退出时才会发生。

相关内容