相关疑难解决方法(0)

bash flock:退出如果无法获得锁定

以下锁定机制用于防止cron作业并发运行:

#!/bin/bash

echo "Before critical section"
(
    flock -e 200
    echo "In critical section"
    sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Run Code Online (Sandbox Code Playgroud)

当一起运行两个实例时,后者一直等到第一个完成,然后运行.这可能导致等待运行的脚本积压.

如何更改此脚本以便在flock无法获取锁定时终止脚本?我试过-n没有成功.

bash concurrency flock

17
推荐指数
2
解决办法
1万
查看次数

普通锁定文件中的竞争条件?

这是使用文件系统创建锁的标准方法.例如,visudo使用它:

[ -f ".lock" ] && exit 1
touch .lock
# do something
rm .lock
Run Code Online (Sandbox Code Playgroud)

1)我很困惑,因为有竞争条件,但Linux使用它

2)有没有更好的方法来锁定shell中的文件?

3)或者我必须使用目录吗?

找到解决方案:man lockfile.

linux bash shell mutex locking

15
推荐指数
2
解决办法
7562
查看次数

标签 统计

bash ×2

concurrency ×1

flock ×1

linux ×1

locking ×1

mutex ×1

shell ×1