主なオプションについて
-x |
排他ロック(ライトロック)。同じロックファイルを参照している別プロセスが排他ロック、共有ロックできなくなる。読み書きできない |
-s |
共有ロック(リードロック)。同じロックファイルを参照している別プロセスが共有ロックはできるが、排他ロックはできなくなる |
-w |
ロックが指定時間ないに取得できないと失敗する。指定時間が0の場合はロックが即時に取得できないと失敗 |
-u |
明示的にアンロックする場合に使う。通常ファイルディスクリプタを閉じると自動でアンロックするため、使用頻度は低いかも |
ファイルを指定する方法(通常)
flock /path/to/lockfile command
ファイルディスクリプタを指定する方法
execでリダイレクトする方法
exec {ファイルディスクリプタ用変数名} > ロックファイルのパス
flock -x $ファイルディスクリプタ用変数名
command
exec $ファイルディスクリプタ用変数名 >&-
※exec {ファイルディスクリプタ用変数名} > ロックファイルのパスはbashが自動的にファイルディスクリプタ番号10以上をつけてくれる方法。execの詳細については
こちら参照
サブシェルを使う方法
(
flock ファイルディスクリプタ番号
command
) ファイルディスクリプタ番号>> ロックファイルのパス
最終更新:2020年12月03日 08:53