需要特定的cron作业解释,使用flock -n + .lock文件+ / bin / bash

时间:2017-10-03 15:38:34

标签: cron

我有这个cronjob,由于某些原因无法正常工作,但我不完全理解它的作用,有人可以解释一下吗?

flock -n /var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh.lock /bin/bash /var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh

我用谷歌搜索flock应该锁定文件,只有在它可以锁定文件时才会运行,这样作业就不能同时运行多次了。

-n做什么?

flock -n

为什么这是.lock文件?

/var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh.lock

我不知道/ bin / bash应该做什么?

/bin/bash

这是我要执行的脚本吗? 为什么首先将它添加为.lock?

/var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh

1 个答案:

答案 0 :(得分:0)

flock -n LOCK-FILE COMMAND

在你的情况下:

  • -n:如果flock无法获取LOCK-FILE,即它已经存在,它将在那里停止,而不是执行命令。
  • 因此-n确保一次只能运行一个COMMAND实例。
  • 在您的情况下,LOCK-FILE是/var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh.lock
  • LOCK-FILE是你决定的。 flock将检查该文件为锁。它可以在你的系统上的任何地方命名,但是这样做很好,因为你知道.lock文件的用途。
    • 为了说明,你可以做flock -n /tmp/some_lock_file.txt script.sh。该值未强制执行,您决定要使用的内容。
  • 你的案件中的命令是/ bin / bash /var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh
  • 您要执行的脚本是COMMAND的值,所以再次为您:/ bin / bash /var/www/vhosts/blia.preview.be/scripts/blia_bab_import.sh
  • / bin / bash是指定脚本blia_bab_import.sh必须在bash shell中运行。你可以不使用.sh文件中的#!/ bin / bash第一行。