Использование flock для параллельного управления очередью: это работает?

Я пишу сценарии Bash для создания нескольких экземпляров программы. Аргументы для порождения экземпляров собираются из файла. Я хотел бы сделать этот доступ к файлу атомарным для каждой инициализации программы, так как файл должен функционировать как очередь для меня, где первая строка читается сценарием, а затем удаляется из файла.

Я использую стадо, чтобы достигнуть этого. У меня вопрос, как долго процесс (скрипт) будет ждать, чтобы получить доступ к файлу, который он хочет прочитать? Пока мой код внутри скрипта spawn выглядит примерно так:

#!/bin/bash

{
  flock -x 3
  IFS= read -u 3 line;
  sed -i '1d' ./file
} 3<>./file
# use $line to spawn new process

Чтение первой строки файла и его удаление не должны занимать много времени, но я должен гарантировать, что никакой другой процесс не будет мешать этому. Кроме того, мне нужно, чтобы процесс дождался закрытия файла, чтобы он мог порождать следующий экземпляр.

0 ответов

Другие вопросы по тегам