Как проверить, используется ли каталог в процессе

Как проверить, используется ли каталог в процессе

У меня есть некий общий каталог /path/to/dir. Я запускаю процесс резервного копирования в этом каталоге. Процесс выполняется на сервере A, в то время как у меня есть доступ только к серверу B. Таким образом, когда процесс резервного копирования будет завершен на сервере A, у меня будут данные в общем каталоге, /path/to/dirкоторый также доступен на сервере B.

Теперь у меня есть скрипт bash на сервере B, который может запуститься только после завершения процесса резервного копирования. Поскольку я не могу получить доступ к другому серверу, я подумал о следующем:

Могу ли я проверить, /path/to/dirиспользуется ли он еще процессом резервного копирования, и запустить свой скрипт только в том случае, если процесс больше не запущен в каталоге?

Не знаю, важно ли знать, что это общий каталог (NFS).

решение1

Лучшее решение: создать файл блокировки на общем ресурсе, который будет существовать только во время выполнения задания и будет удален на сервере A после завершения задания.

На сервере B вы просто проверяете, существует ли этот файл, и если да, ждете, пока он исчезнет.

решение2

Установите приложение-производитель A для создания файлов как example_output.tar.gz.partи только после того, как убедитесь, что все завершено, переименуйте вexample_output.tar.gz

Настройте потребляющее приложение B на игнорирование *.partфайлов и обработку всех файлов, которые не соответствуют*.part

Эта схема узнаваема, поскольку она используется во многих потребительских приложениях (на ум приходят веб-браузеры или клиенты SCP).

Таким образом, вам не нужен файл блокировки, и вы можете иметь несколько потребителей. Файл блокировки всегда является потенциальной причиной сбоя, если старый файл остается после того, как приложение умирает (или сервер перезагружается).

Связанный контент