会有flock命令以死锁状态结束的情况吗?

问题描述 投票:0回答:1
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文件,并且同时另一个进程想要锁定此文件,那么这不会引起问题吗?

bash shell locking deadlock flock
1个回答
0
投票

不应该有任何死锁或争用。

一旦运行此脚本的进程超过flock,只有该进程的# my code节将运行,直到该进程终止。脚本的其他实例(进程)将失败,并在exit 1处显示flock

© www.soinside.com 2019 - 2024. All rights reserved.