Помимо блокировки самого файла, вы можете создать файл, используемый как блокировку (файл блокировки). Для этого есть множество утилит, например procmail
имеет файл блокировки
, а в Debian пакет liblockfile-bin
имеет файл блокировки
. Procmail должен быть достаточно распространенным, чтобы быть доступным в большинстве систем.
Но в основном это сводится к примерно так:
tempfile=$(mktemp ./lock.XXXX)
lockfile=./lockfile
if ln $tempfile $lockfile ; then
echo got it
# do something
rm $lockfile # after you're done
else
echo did not succeed
fi
rm $tempfile
ln
не будет сбивать цель, если она уже существует, в отличие от чего-то вроде echo> file
, вместо этого вы получите сообщение об ошибке, которое вы можете проверить .
ПРИМЕЧАНИЕ: , если вы хотите блокировать NFS , используйте какой-нибудь инструмент, созданный для этой цели. Семантика одновременного доступа к файлам через NFS ... по меньшей мере интересна.