这是我的 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 运行脚本,只要第一个处于“sleep 5”,一切正常,这意味着另一个没有启动。但是,当第一个轮到从另一个脚本(其他文件)执行代码时,第二个运行开始执行。
所以我在这里有两个问题:
我应该怎么做才能防止该脚本及其所有“子代”在脚本或其“子代”仍在运行时运行。(除了“孩子”之外,我没有找到更合适的表达方式来运行另一个脚本,对此感到抱歉:))。
根据手册页, -n 导致进程在未能获得锁定时退出,但据我所知,它只是等到它可以运行。我错过了什么?