.\" .\" 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. .\" .\" %Id: lockf.1,v 1.6 1998/07/08 05:29:04 jdp Exp % .\" jpman %Id: lockf.1,v 1.3 1997/08/20 12:32:03 horikawa Stab % .\" .Dd July 7, 1998 .Os FreeBSD .Dt LOCKF 1 .Sh 名称 .Nm lockf .Nd ファイルをロックしてコマンドを実行する .Sh 書式 .Nm .Op Fl ks .Op Fl t Ar seconds .Ar file .Ar command .Op Ar arguments .Sh 解説 .Nm はファイル .Ar file に対して排他的ロックを獲得します。 この際、必要ならこのファイルを生成します。 そしてそのロックを保持したまま、 引数 .Ar arguments をつけてコマンド .Ar command を実行します。 .Ar command の実行が完了すると、 .Nm はロックを開放し、 .Fl k オプションが指定されていなければ ファイル .Ar file を削除します。 .Xr flock 2 に述べられている BSD スタイルのロック方式が用いられます。 すなわち、 .Ar file が存在するだけではロックされているとは見なされません。 .Pp 以下のオプションが利用可能です。 .Bl -tag -width Fl .It Fl k コマンド完了後もロックを保存します (削除しません)。 .It Fl s メッセージ出力を行いません。 ロック獲得の失敗は、終了ステータスにのみ反映されます。 .It Fl t Ar seconds ロック待ちのタイムアウト値を指定します。 デフォルトでは、 .Nm はロック獲得を永遠に待ち続けます。 このオプションによりタイムアウト値が指定されていれば、 .Nm はロック獲得をあきらめるまでに最大 .Ar seconds 秒待ちます。 タイムアウトとしては 0 を指定することもでき、 その場合 .Nm はロック獲得に失敗すると即座に終了します。 .El .Pp いかなる場合でも、 他のプロセスが保持しているロックを .Nm が破棄することはありません。 .Sh 診断 ロック獲得に成功すると、 .Nm は .Ar command の終了ステータスを返します。 それ以外の場合、 .Nm は .Xr sysexits 3 にて定義されている以下のいずれかの終了コードを返します。 .Bl -tag -width F_CANTCREATX .It Dv EX_TEMPFAIL 指定されたロックファイルは他のプロセスによって既にロックされています。 .It Dv EX_CANTCREAT .Nm はロックファイルを生成できませんでした。 原因としては、例えば、適切なアクセス権がないことが考えられます。 .It Dv EX_USAGE .Nm のコマンドラインにエラーがあります。 .It Dv EX_OSERR システムコール(例えば fork)が予期せず失敗しました。 .El .Sh 関連項目 .Xr flock 2 , .Xr sysexits 3 . .Sh 作者 .An John Polstra Aq jdp@polstra.com .