在bash中创建一个锁文件以避免重复执行

时间:2014-05-07 21:46:28

标签: bash locking

我对bash不太了解我一直在修改代码来创建一个锁定文件,所以如果第一个进程还没有完成,cron就不会再次执行。

LOCK_FILE=./$(hostname)-lock
(set -C; : > $LOCK_FILE) 2> /dev/null
if [ $? != "0" ]; then
   echo "already running (lock file exists); exiting..."
exit 1
fi

trap 'rm $LOCK_FILE' INT TERM EXIT

当我第一次运行它时,我得到的消息已经在运行,就像文件已经存在一样。

也许我错过了什么

1 个答案:

答案 0 :(得分:1)

#!/bin/sh

(
  # Wait for lock on /tmp/lock

  flock -x -w 10 200 || exit 127 # you can use or not use -w

  #your stuff here

) 200> /tmp/lock

检查手册页flock。

这是适合您的工具。 它在手册页中附带了示例:)