ファイルへの同時アクセスを避けるためにファイルをロックするスクリプトがあります。 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つのインスタンスのみが同時に実行できることを自分で証明できます。または。
あなたが持っているものがうまくいかないことがわかります。これは、ロックファイルを削除したためです。つまり、ロックを取得しようとする新しいプロセスは、すでにロックを保持しているファイル以外のファイルで実行されます。