我有一个可以同时调用多次的 bash 脚本。为了保护脚本访问的状态信息(保存在/tmp
文件中),我使用这样的文件锁定:
do_something()
{
...
}
// Check if there are any other instances of the script; if so exit
exec 8>$LOCK
if ! flock -n -x 8; then
exit 1
fi
// script does something...
do_something
现在,在此脚本运行时调用的任何其他实例都将退出。如果有 n 个同时调用,而不是 n 次,我希望脚本只运行一次额外的时间,如下所示:
do_something()
{
...
}
// Check if there are any other instances of the script; if so exit
exec 8>$LOCK
if ! flock -n -x 8; then
exit 1
fi
// script does something...
do_something
// check if another instance was invoked, if so re-run do_something again
if [ condition ]; then
do_something
fi
我该怎么做呢?在退出之前触摸羊群中的一个文件并将该文件作为第二个 if 的条件似乎不起作用。