脚本中lockfile的使用及其意义

脚本中lockfile的使用及其意义

我有一个代码,其中使用了下面的行,因此我被卡住了。我已经在网上搜索过,但不太理解。只是了解了如下的基本信息集

lockfile 可用于创建一个或多个信号量文件。如果lockfile无法创建所有指定的文件(按指定的顺序),它将等待睡眠时间(默认为8)秒并重试最后一个未成功的文件。

任何人都可以让我知道这一点吗?预先感谢注意:LockFile 是一个路径变量

if lockfile -1 -r0 ${LockFile}
then

答案1

的目的lockfile是保护某些命令的执行锁(也称为互斥锁)。也就是说,考虑以下程序:

if lockfile "$LockFile"; then
  stuff
  more stuff
  rm -f "$LockFile"
else
  echo 1>&2 "Fatal error: another process has been keeping the lock for too long or the lock file is inaccessible"
  exit 3
fi

一次只能有一个脚本实例执行该stuff; more stuff部分。如果启动第二个实例,那么第二个实例将等待第一个实例完成(更准确地说,直到删除锁定文件),直到该选项指定的某个最大时间。-TIME

使用参数-r0,第二个实例根本不等待:它立即转到分支else。因此,您无法运行此脚本的并发实例(或脚本的这一部分,如果这只是更大脚本的一部分)。

相关内容