我知道从 cron 作业运行时使用flock
and 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