-1

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

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

如果文件被解锁;然后锁定文件 ./programA 解锁文件 fi

有人告诉我flock可以用于这个目的我在谷歌上搜索的代码是这样的:(flock -s 200 ./program)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'

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

谁能给出一些示例脚本?谢谢

4

1 回答 1

1

200和之间有额外的空间>,用于200>重定向。

那 200 是文件号,并200>重定向它,虽然200 >是无意义的,因此是语法错误。

供参考:的手册页flock

于 2013-04-28T18:07:57.403 回答