.\" .\" Copyright (C) 1998 John D. Polstra. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY JOHN D. POLSTRA AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL JOHN D. POLSTRA OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/usr.bin/lockf/lockf.1,v 1.18.2.2 2007/11/14 19:25:04 ru Exp % .\" $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/man1/lockf.1,v 1.5 2007/11/20 13:50:08 ru Exp $ .\" $FreeBSD$ .\" .Dd 7 июля 1998 .Os .Dt LOCKF 1 .Sh НАЗВАНИЕ .Nm lockf .Nd выполнить команду, удерживая блокировку на файле .Sh СИНТАКСИС .Nm .Op Fl ks .Op Fl t Ar секунды .Ar файл .Ar команда .Op Ar аргументы .Sh ОПИСАНИЕ Утилита .Nm запрашивает эксклюзивную блокировку файла .Ar файл , создавая его при необходимости .Bf Em и удаляя файл при завершении, если это не было запрещено явно. .Ef Удерживая полученную блокировку, утилита выполняет указанную команду с заданными аргументами. Когда .Ar команда завершается, .Nm снимает блокировку и, если не указана опция .Fl k , удаляет .Ar файл . Используется механизм блокировок в .Bx Ns -стиле , описанный в .Xr flock 2 ; одно лишь существование файла .Ar файл не является признаком установленной блокировки. .Pp Если утилита .Nm используется для обеспечения конкурентности между несколькими процессами, рекомендуется использовать опцию .Fl k . Она гарантирует порядок блокировки, а также реализует алгоритм с повышенной производительностью, который минимизирует нагрузку на процессор, связанную с конкурентным удалением файла, разблокировкой и новым запросом блокировки. Следует отметить, что если опция .Fl k не используется, то порядок блокировки не гарантируется. .Pp Имеются следующие опции: .Bl -tag -width ".Fl t Ar секунды" .It Fl k Оставлять (не удалять) файл блокировки после завершения работы команды. .It Fl s Не выводить никаких сообщений. Невозможность получения блокировки отразится лишь на статусе завершения. .It Fl t Ar секунды Установить максимальное время ожидания получения блокировки. По умолчанию, .Nm будет ждать бесконечно долго. Если же задан этот параметр, утилита будет ждать не более указанного числа секунд, после чего прекратит свои попытки получения блокировки. Может быть указано значение 0, тогда .Nm завершится с ошибкой, если не удалось получить блокировку сразу же. В случае, если время ожидания истекло, .Ar команда .Em не выполняется. .El .Pp Ни при каких обстоятельствах .Nm не нарушит блокировку, удерживаемую другим процессом. .Sh СТАТУС ЗАВЕРШЕНИЯ Если блокировка была успешна получена, .Nm возвращает статус завершения команды .Ar команда . В противном случае, будет возвращён один из следующих кодов, определённых в .Xr sysexits 3 : .Bl -tag -width ".Dv EX_CANTCREAT" .It Dv EX_TEMPFAIL Указанный файл блокировки уже заблокирован другим процессом. .It Dv EX_CANTCREAT Утилита .Nm не смогла создать файл блокировки, например, из-за недостаточных прав доступа. .It Dv EX_USAGE Неверный синтаксис командной строки, переданной .Nm . .It Dv EX_OSERR Неожиданный сбой системного вызова (например, .Xr fork 2 ) . .El .Sh СМОТРИ ТАКЖЕ .Xr flock 2 , .Xr sysexits 3 .Sh ИСТОРИЯ Утилита .Nm появилась во .Fx 2.2 . .Sh АВТОРЫ .An John Polstra Aq jdp@polstra.com