gpt4 book ai didi

Bash:执行外部脚本时如何锁定

转载 作者:行者123 更新时间:2023-11-29 09:20:44 24 4
gpt4 key购买 nike

这是我的 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”就一切正常,这意味着另一个不会启动。但是当第一个运行从另一个脚本(其他文件)执行代码时,第二个运行开始执行。

所以我这里有两个问题:

  1. 当脚本或其“子”仍在运行时,我应该怎么做才能防止此脚本及其所有“子”运行。(除了“ child ”之外,我没有找到更合适的表达来运行另一个脚本,对此感到抱歉:))。

  2. 根据手册页,-n 会导致进程在无法获得锁定时退出,但据我所知,它只是等待它可以运行。我错过了什么?

最佳答案

您的问题可能相当普通。即,

false || ( exit 1 )

不会导致脚本退出。相反,exit 指示子 shell 退出。因此,将您的第一行更改为:

flock -n -e 200 || { echo "This script is currently being run"; exit 1; } >&2

关于Bash:执行外部脚本时如何锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com