【发布时间】:2012-11-13 05:50:25
【问题描述】:
这是我的 bash 代码:
(
flock -n -e 200 || (echo "This script is currently being run" && exit 1)
sleep 10
...Call some functions which is written in another script...
sleep 5
) 200>/tmp/blah.lockfile
我连续从两个 shell 运行脚本,只要第一个处于“睡眠 5”状态,一切正常,这意味着另一个没有启动。但是,当第一个轮到从另一个脚本(其他文件)执行代码时,第二个运行开始执行。
所以我在这里有两个问题:
我应该怎么做才能防止该脚本及其所有“子代”在脚本或其“子代”仍在运行时运行。 (除了“孩子”之外,我没有找到更合适的表达方式来运行另一个脚本,对此感到抱歉:)。
根据手册页,-n 导致进程在无法获得锁时退出,但据我所知,它只是等到它可以运行。我错过了什么?
【问题讨论】: