如何检查目录是否仍在进程中使用

如何检查目录是否仍在进程中使用

我有一些共享目录/path/to/dir。我正在该目录上运行备份进程。该进程在服务器 A 上运行,而我只能在服务器 B 上访问。因此,当服务器 A 上的备份进程完成后,我将在共享目录中获得数据,/path/to/dir该目录在服务器 B 上也可用。

现在我在服务器 B 上有一个 bash 脚本,该脚本可能仅在备份过程完成时运行。由于我无法访问另一台服务器,因此我考虑了以下事项:

我可以检查/path/to/dir备份过程是否仍在使用,并且仅当目录上不再运行时才运行我的脚本吗?

我不知道知道它是一个共享目录(NFS)是否重要。

答案1

更好的解决方案:在共享上创建一个锁文件,该文件仅在作业运行时存在,并且作业完成后将在服务器 A 上删除。

在服务器 B 上,您只需检查该文件是否存在,如果存在,则等到它消失。

答案2

设置生产应用程序 A 来创建文件,example_output.tar.gz.part并且仅在确保一切完成后,重命名为example_output.tar.gz

设置使用应用程序 B 来忽略*.part文件并处理所有不匹配的文件*.part

这种方案是可以识别的,因为它被用于许多消费者应用程序(想到了网络浏览器或 scp 客户端)。

这样,您就不需要任何锁文件,并且可以拥有多个使用者。如果应用程序死机(或服务器重新启动)后留下旧锁文件,则锁文件始终是失败的潜在原因。

相关内容