【发布时间】:2018-12-06 02:16:14
【问题描述】:
我正在尝试以这样的方式配置我的脚本
- 如果某些数据不可用,请尝试获取它
- 如果另一个进程已经在获取它,请等待该进程完成
- 使用数据
我从here 发现了这个非常好的羊群示例:
exec 200>$pidfile
flock -n 200 || exit 1
pid=$$
echo $pid 1>&200
如果它不能获得锁(-n 标志),这将失败。
我可以假设这意味着另一个文件已经锁定了$pidfile,我如何才能检测到锁定已经在不同的进程中被释放?
我知道wait $pid 会等到该进程完成,因此如果有某种方法可以记录哪个进程当前持有锁或只是检测解锁,以便其他进程在数据可用时知道,那么我认为这会起作用。
有什么想法吗?
【问题讨论】:
标签: bash shell concurrency parallel-processing flock