テストファイルのロック

テストファイルのロック

ファイルへの同時アクセスを避けるためにファイルをロックするスクリプトがあります。 2つの異なる端末で同じスクリプトを同期的に実行して動作することを確認するにはどうすればよいですか?

これはスクリプトです。

#!/bin/bash

(
  flock -xn 200
  trap 'rm /tmp/test_lock.txt' 0
  RETVAL=$?
  if [ $RETVAL -eq 1 ]
  then
    echo $RETVAL
    echo  "file already removed"
    exit 1
  else
    echo "locked and removed"
  fi
) 200>/tmp/test_lock.txt

ベストアンサー1

あなたはそれを実行することはできません同期的にしかし、sleep 60角かっこ内のロックセクションに1つを配置すると、1つのインスタンスのみが同時に実行できることを自分で証明できます。または。


あなたが持っているものがうまくいかないことがわかります。これは、ロックファイルを削除したためです。つまり、ロックを取得しようとする新しいプロセスは、すでにロックを保持しているファイル以外のファイルで実行されます。

おすすめ記事