Я использую flock потому, что у нас одновременно запущено N процессов, которым всем нужен доступ для чтения к файлу.Если файл не существует, нам нужно создать его, но это может сделать только один процесс, иначе они будут переписываться друг на друга.
Обычный пример того, как сделать это с помощью Linux flock
выглядит примерно так:
(
flock -n 9 || exit 1
if [ ! -f file.txt ]; then
echo 'Simulate the file creation' > file.txt
fi
) 9>/var/lock/mylockfile
Однако читать очень сложно, особенно если вы не знакомы с подоболочками и дескрипторами файлов.Мне интересно, можно ли вручную заблокировать и разблокировать файл:
flock --exclusive file.txt
if [ ! -f file.txt ]; then
echo 'Simulate the file creation' > file.txt
fi
flock --unlock file.txt
Если нет, существует ли какой-либо аналогичный способ использования flock
, который максимально удобочитаем, избегая подоболочек, exec
и т.д?