在Linux(CygWin)shell脚本中锁定文件(并检测该锁定)

时间:2014-03-23 20:47:48

标签: shell cygwin file-locking

如何使用Linux(CygWin)shell脚本锁定文件? 我需要稍后在另一个shell脚本的代码中检测 这样做的原因:我有两个Linux(CygWin)shell脚本(名为A和B),并希望使用文件锁定使第一个(A)能够检测第二个(B)是否正在运行。 即使有其他方法来检测程序是否正在运行,我也想学习文件锁定方法,因为它有一天会有优势。

2 个答案:

答案 0 :(得分:2)

使用flock执行以下操作:在执行脚本B期间锁定文件,并从脚本中检查锁定状态。
启动脚本B时:

flock /tmp/lockfile.lck ScriptB.sh

内部脚本A,用于检测锁定:

flock -n /tmp/lockfile.lck echo "Script B is not running" || echo "Script B is running right now"

' -n'选项使flock"不等待" 以获取锁定文件的释放(默认操作)。因此,如果等待是你想要的,那将是另一种使用flock的方式。

答案 1 :(得分:1)

您可以触摸锁定文件。

例如,在任何脚本中,当处理一个文件abc.txt时,该脚本会生成一个名为abc.txt.lck的锁定文件。因此,如果其他脚本看到其锁定文件,它将停止更改它。

find . -type f |while read line
do
  if [ -f ${line}.lck ]; then
     echo "file $line is locked, bypass it"
  else
     touch ${line}.lck
     # work on file $line
     rm -f ${line}.lck
  fi
done
相关问题