そのスレッドについて: bash flock:ロックを取得できない場合は終了します
誰かが「200」の意味を説明してくれたら幸いです。
私は群れについて読んだことがあり、ファイル記述子を指定する場合は200のようですが、この数の何がそれほど良いのでしょうか。
そのスレッドについて: bash flock:ロックを取得できない場合は終了します
誰かが「200」の意味を説明してくれたら幸いです。
私は群れについて読んだことがあり、ファイル記述子を指定する場合は200のようですが、この数の何がそれほど良いのでしょうか。
番号200については、特別なことは何もありません。これは、flock
コマンドのマニュアルページで使用されている例にすぎません。たまたま多数あるため、スクリプト中に開いた他のファイルのファイル記述子と競合する可能性はほとんどありません。
あなたのコメントでは、あなたはについて尋ねます:
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
括弧()
はサブシェルを作成します。親プロセスとは別の新しいプロセス。その200>/tmp/blah.lockfile
プロセスが/tmp/blah.lockfile
ファイル記述子200に書き込み可能になります。括弧内のコマンドは、そのシェル内で実行されます。
flock -e 200
ファイル記述子200が指すファイルの排他的ロックを取得します。排他的ロックとは、排他的または共有のいずれかでそのファイルのロックを取得しようとする他のユーザーが、このロックが解放されるか失敗するまでブロック(待機)することを意味します。タイムアウトになった場合、またはブロックしないように求められた場合。したがって、サブシェルの本体の残りの部分(echo
およびsleep
コマンド)の間、ロックはそのサブシェルによって保持され、他の誰もそのロックを取得できません。サブシェルが終了すると、ファイルは閉じられ、ロックが解除されます。