set -e
pidfile=/data/demo3
# lock it
exec 200<>$pidfile
flock -n 200 || exit 1
# my code
echo "hello"
sleep 20
echo "bi"
我有一个文本文件,几个进程可以同时访问此文本文件。因此,我正在使用flock命令来确保并发问题。因此,某个进程在时间= T1时锁定文件,而其他进程想同时在同一时间= T1锁定同一文件。那么这不会引起哪个进程首先锁定该文件的问题,还是这种情况最终导致死锁的问题?还是我缺少什么?
如果我使用此代码并且我正在锁定此demo3文件,并且同时另一个进程想要锁定此文件,那么这不会引起问题吗?
不应该有任何死锁或争用。
一旦运行此脚本的进程超过flock
,只有该进程的# my code
节将运行,直到该进程终止。脚本的其他实例(进程)将失败,并在exit 1
处显示flock
。