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