名 前
flock − フ ァ イ ル ロ ッ ク を 取 得 し 、 そ の ロ ッ ク を 保 持 す る コ マ ン ド を 実 行 す る
書 式
flock [ −−shared | −−timeout=seconds ] lockfile command ..
説 明
flock(2)
シ ス テ ム コ ー
ル を 使 っ て フ
ァ イ ル ロ ッ ク
を 取 得 し 、 そ
の ロ ッ ク を 保
持 す る 指 定 さ
れ た コ マ ン ド
を 実 行 す る 。
指 定 す る オ プ
シ ョ ン に よ り
、 排 他 ロ ッ ク
に も 共 有 ロ ッ
ク に も で き る
。 ま た 、 ロ ッ
ク 競 合 が 発 生
し た 際 の 動 作
は 、 ロ ッ ク が
使 用 可 能 に な
る ま で 無 限 に
待 ち 続 け る (デ
フ ォ ル ト ) よ う
に 指 定 す る こ
と も 、 指 定 さ
れ た 時 間 の 後
に ロ ッ ク が 使
用 可 能 に な ら
な け れ ば 失 敗
す る よ う に 指
定 す る こ と も
で き る 。 時 間
を 0 に 指 定 す る
と 、 コ マ ン ド
は (訳 註 : ロ ッ ク
の 取 得 を ) 全 く
待 た な い 。
−−shared 共 有 ロ ッ
ク を 取 得 す る
。 共 有 ロ ッ ク
の 取 得 は 、 他
者 に よ る 共 有
ロ ッ ク の 取 得
を 停 止 さ せ な
い が 、 他 者 に
よ る 排 他 ロ ッ
ク の 取 得 を 停
止 さ せ る 。 逆
に 、 排 他 ロ ッ
ク の 取 得 (デ フ
ォ ル ト ) は 、 他
者 に よ る 排 他
ロ ッ ク の 取 得
も 共 有 ロ ッ ク
の 取 得 も 停 止
さ せ る 。 一 般
的 に は 、 ロ ッ
ク さ れ た デ ー
タ を コ マ ン ド
が 単 に 読 み 込
む 場 合 に は 共
有 ロ ッ ク が 使
用 さ れ 、 ロ ッ
ク さ れ た デ ー
タ に コ マ ン ド
が 書 き 込 み を
行 う 場 合 に は
排 他 ロ ッ ク が
使 用 さ れ る 。
−−timeout=n
n 秒 以 内 に ロ ッ ク が 取 得 で き な い 場 合 は 、 中 止 (abort) す る 。 全 く ブ ロ ッ ク せ ず に ロ ッ ク を 取 得 し た い 場 合 は 、 −−timeout=0 と 指 定 す る こ と 。 タ イ マ ー は ロ ッ ク の 取 得 に の み 適 用 さ れ る 。 ロ ッ ク が 取 得 さ れ る と 、 タ イ ム ア ウ ト は 直 ち に キ ャ ン セ ル さ れ る 。 実 行 さ れ る コ マ ン ド は タ イ ム ア ウ ト の 対 象 で は な い 。
例 (い く つ か の 仮 想 的 な プ ロ グ ラ ム の 呼 び 出 し )
flock /etc/passwd read-and-write-to-passwd
flock −−shared /etc/passwd just-read-something-from-passwd
flock −−timeout=0 /sys /usr/local/bin/update-hotplug /sys
著 者
Written by Adam J. Richter