我有一个脚本锁定文件以避免并发访问它,如何从两个不同的终端同步执行相同的脚本,以检查它是否有效?
这是脚本
#!/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
括号内的锁定部分中放置一个,您可以向自己证明只有一个实例可以同时运行(同时)。或不。
你会发现你拥有的东西不起作用。这是因为您删除了锁定文件,这意味着任何尝试获取锁定的新进程都会在与已持有锁定的文件不同的文件上执行此操作。