Страница Справочника lockf.1
LOCKF(1) Справочник основных команд FreeBSD LOCKF(1)
НАЗВАНИЕ
lockf -- выполнить команду, удерживая блокировку на файле
СИНТАКСИС
lockf [-ks] [-t секунды] файл команда [аргументы]
ОПИСАНИЕ
Утилита lockf запрашивает эксклюзивную блокировку файла файл, создавая
его при необходимости и удаляя файл при завершении, если это не было
запрещено явно. Удерживая полученную блокировку, утилита выполняет ука-
занную команду с заданными аргументами. Когда команда завершается, lockf
снимает блокировку и, если не указана опция -k, удаляет файл. Использу-
ется механизм блокировок в BSD-стиле, описанный в flock(2); одно лишь
существование файла файл не является признаком установленной блокировки.
Если утилита lockf используется для обеспечения конкурентности между
несколькими процессами, рекомендуется использовать опцию -k. Она гаран-
тирует порядок блокировки, а также реализует алгоритм с повышенной произ-
водительностью, который минимизирует нагрузку на процессор, связанную с
конкурентным удалением файла, разблокировкой и новым запросом блокировки.
Следует отметить, что если опция -k не используется, то порядок блоки-
ровки не гарантируется.
Имеются следующие опции:
-k Оставлять (не удалять) файл блокировки после завершения
работы команды.
-s Не выводить никаких сообщений. Невозможность получения бло-
кировки отразится лишь на статусе завершения.
-t секунды Установить максимальное время ожидания получения блокировки.
По умолчанию, lockf будет ждать бесконечно долго. Если же
задан этот параметр, утилита будет ждать не более указанного
числа секунд, после чего прекратит свои попытки получения
блокировки. Может быть указано значение 0, тогда lockf
завершится с ошибкой, если не удалось получить блокировку
сразу же. В случае, если время ожидания истекло, команда не
выполняется.
Ни при каких обстоятельствах lockf не нарушит блокировку, удерживаемую
другим процессом.
СТАТУС ЗАВЕРШЕНИЯ
Если блокировка была успешна получена, lockf возвращает статус завершения
команды команда. В противном случае, будет возвращён один из следующих
кодов, определённых в sysexits(3):
EX_TEMPFAIL Указанный файл блокировки уже заблокирован другим процес-
сом.
EX_CANTCREAT Утилита lockf не смогла создать файл блокировки, например,
из-за недостаточных прав доступа.
EX_USAGE Неверный синтаксис командной строки, переданной lockf.
EX_OSERR Неожиданный сбой системного вызова (например, fork(2)).
СМОТРИ ТАКЖЕ
flock(2), sysexits(3)
ИСТОРИЯ
Утилита lockf появилась во FreeBSD 2.2.
АВТОРЫ
John Polstra <jdp@polstra.com>
FreeBSD 7.0 7 июля 1998 FreeBSD 7.0