锁定 bash 脚本以防止脚本本身并行运行?

锁定 bash 脚本以防止脚本本身并行运行?

我知道从 cron 作业运行时使用flockand solo(虽然不确定区别)。但是,是否可以从脚本本身内部阻止并行运行?

答案1

正如 Ipor Sircer 所说,lckdo也许是正确的选择。

bash脚本中可能是这样的: $BASHPID 是正在运行的脚本的 PID。您可以将其保存到文件中并检查是否存在(或者更好地检查包含 PID 的文件是否仍然处于活动状态)。

#!/usr/bin/env bash

PIDFILE="/foo/bar/script.pid"

# script running?
[[ -s $PIDFILE ]] && exit

# no, create pidfile
echo $BASHPID > $PIDFILE


# .. do some stuff

# delete pidfile
rm $PIDFILE

相关内容