flock
これには本当に優れています。 flock
を使用できます シェル スクリプトのラッパーで使用するか、コマンド ラインで使用するか、スクリプト自体に組み込みます。
flock
の良いところ 待っている間、ビジー ループで待機しないということです。
また、常に プロセスが終了したときにロックをクリーンアップします / flock
終了します。
アトミック ファイル/ディレクトリ作成に基づくメソッドは、プロセスがクリーンアップせずに終了した場合 (またはカーネル パニックや電源障害が発生した場合) にロックアウトされる可能性があります。
flock
で 、Linux カーネルがクリーンアップを行います。
マニュアルから、
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
この形式では、シェル スクリプトで特定のコード ブロックをラップできます。
または、このように実行することもできます
/usr/bin/flock /tmp/lockfile command
無期限にブロック/待機したくない場合は、タイムアウトを指定できます:
-w --timeout <secs> wait for a limited amount of time
または、非ブロッキング引数を使用してください:
-n --nonblock fail rather than wait