LOCKF(1)

名称
lockf - ファイルをロックしてコマンドを実行する

書式
lockf [-ks] [-t seconds] file command [arguments]

解説
lockf はファイル file に対して排他的ロックを獲得します。 この際、必要ならこのファイルを生成します。 そしてそのロックを保持したまま、 引数 arguments をつけてコマンド command を実行します。 command の実行が完了すると、 lockf はロックを開放し、 -k オプションが指定されていなければ ファイル file を削除します。 flock(2) に述べられている BSD スタイルのロック方式が用いられます。 すなわち、 file が存在するだけではロックされているとは見なされません。

以下のオプションが利用可能です。

-k  コマンド完了後もロックを保存します (削除しません)。

-s  メッセージ出力を行いません。 ロック獲得の失敗は、終了ステータスにのみ反映されます。

-t seconds
    ロック待ちのタイムアウト値を指定します。 デフォルトでは、 lockf はロック獲得を永遠に待ち続けます。 このオプションによりタイムアウト値が指定されていれば、 lockf はロック獲得をあきらめるまでに最大 seconds 秒待ちます。 タイムアウトとしては 0 を指定することもでき、 その場合 lockf はロック獲得に失敗すると即座に終了します。

いかなる場合でも、 他のプロセスが保持しているロックを lockf が破棄することはありません。

診断
ロック獲得に成功すると、 lockf は command の終了ステータスを返します。 それ以外の場合、 lockf は sysexits(3) にて定義されている以下のいずれかの終了コードを返します。

EX_TEMPFAIL
    指定されたロックファイルは他のプロセスによって既にロックされています。

EX_CANTCREAT
    lockf はロックファイルを生成できませんでした。 原因としては、例えば、適切なアクセス権がないことが考えられます。

EX_USAGE
    lockf のコマンドラインにエラーがあります。

EX_OSERR
    システムコール(例えば fork)が予期せず失敗しました。

関連項目
flock(2), sysexits(3).

歴史
lockf が最初に登場したのは FreeBSD 2.2 です。

作者
John Polstra <jdp@polstra.com>.