シェルでファイルをロックする方法:基本と応用
シェル内で、ファイルをロックするために flock コマンドを使用することができます。flock コマンドは、他のプロセスが同時にファイルに書き込みや読み取りを行うことを防ぐ、ファイルやディレクトリを排他的にロックする機能を提供しています。
flock -x file.lock your_command
file.lock はロック情報を保存するためのファイルであり、your_command は実行するコマンドです。flock コマンドを実行すると、file.lock ファイルの排他ロックを取得しようとします。ロックを取得できれば、your_command コマンドを実行します。ロックが取得できない場合は、ロックが取得されるまで待機します。
その他、スクリプト内のクリティカルセクションにロックをかけるために、flockコマンドを使用することもできます。この方法で、同時に複数のプロセスがスクリプト内の重要な部分を実行することを防ぎます。
(
flock -x 200
# Critical section
) 200>/var/lock/mylockfile
この例では、( )内のコードブロックはクリティカルセクションを表しており、flock -x 200 はファイル記述子が200のファイルに排他的なロックを取得します。これにより、同時にクリティカルセクション内のコードを実行できるプロセスは1つだけとなります。