Файл блокировки должен работать хорошо, если файл блокировки существует, то какой-то процесс использует целевой файл, а другим процессам придется ждать.
Если у вас есть пакет lockfile-progs , вы можете использовать его для проверки существующей действительной блокировки (в течение последних 5 минут) с помощью lockfile-check и аналогичных lockfile-create & lockfile-remove . 
  Обратите внимание, что эти файлы блокировки не блокируют и не блокируют доступ к файлу, а просто информативны, поэтому ваши сценарии знают, что они не должны мешать друг другу.
lockfile-create есть задержка по умолчанию, если файл блокировки уже существует, прежде чем продолжить, он будет ждать, пока файл не будет разблокирован. Вот исключение из справочной страницы:
  -r retry-count, --retry retry-count
  
  Попробуйте заблокировать время повторного подсчета имени файла, прежде чем сдаться.   Каждая попытка будет задержана немного дольше, чем последняя (с шагом 5 секунд), пока не будет достигнута максимальная задержка в одну минуту между повторными попытками.  Если число повторов не указано, по умолчанию используется значение 9, которое прекращается через 180 секунд (3 минуты), если все 9 попыток блокировки завершатся неудачно.
Вот базовый пример, разрешающий использование нескольких команд, пока файл file.cfg заблокирован (включая выход при сбое lockfile-create ), но смотрите страницу man для более подробной информации.
lockfile-create file.cfg  || { echo "lockfile-create failed, exiting now"; exit; }
...
sed -i ... file.cfg
...
lockfile-remove file.cfg
Если вам нужен файл блокировки более 5 минут, используйте lockfile-touch чтобы «работать вечно, касаясь замка раз в минуту, пока не будет убит». Вот выдержка из справочной страницы:
Locking a file during a lengthy process:
     lockfile-create /some/file
     lockfile-touch /some/file &
     # Save the PID of the lockfile-touch process
     BADGER="$!"
     do-something-important-with /some/file
     kill "${BADGER}"
     lockfile-remove /some/file
Если вы действительно хотите сделать что-то особенное в ожидании разблокировки файла, вы можете использовать цикл while, подобный этому, но между проверкой и блокировкой файла может быть окно в несколько миллисекунд (0,003 с в моих time тестах), но тогда lockfile-create просто подождет, пока все будет безопасно.
while lockfile-check file.cfg
do
  echo doing stuff waiting for lock to clear
  sleep 1
done
lockfile-create file.cfg || exit
...
sed -i ... file.cfg
...
lockfile-remove file.cfg
И пока оба сценария используют и уважают файлы блокировки, sed никогда не сможет заменить файл, пока он разблокирован, поэтому не должно быть конфликтов копирования и переименования файлов.
Или есть другие похожие варианты, такие как:
- dotlockfile
- ваш собственный test -a FILEиtouch...
- flockкак в ответе Камиля, находится в пакете- coreutils, что приятно
- Сохраните значения в программе базы данных, которая может безопасно обрабатывать одновременный доступ