如何使用flock来协调不同程序的运行,以便它们可以在不同的时间运行?

时间:2013-04-28 17:55:56

标签: linux bash flock

在远程主机中,我想运行3个程序A,B和C,但我希望它们在不同的时间运行,所以如果A正在运行,B和C就无法运行 所以当我想要运行A时,如果我检测到文件被锁定,我会等到它被解锁

我的想法是在这些程序之间创建一个锁文件,例如进程之间的互斥锁 像:

如果文件已解锁;然后  锁定文件 ./programA  解锁文件  网络

有人告诉我flock可以用于此目的 我在谷歌搜索 代码如下: ( flock -s 200 。/程序 )200> / var / lock / mylockfile

但我不知道如何将其作为shell脚本 我使用shell脚本trylock.sh

    #!/bin/bash
    set -e

    (
    flock -x -w 10 200
    sleep 20
    ) 200 > lockfile

当我跑步时,我得到了

trylock.sh: line 7: syntax error near unexpected token `200'

此外,如何将锁定超时设置为intinite

任何人都可以提供一些示例脚本吗? 感谢

1 个答案:

答案 0 :(得分:1)

200>之间有额外的空格,请在重定向中使用200>

200是文件编号,而200>重定向,而200 >是无意义的,因此语法错误。

供参考:man page of flock