【问题标题】:how to use flock to orchestrate running of different programs, so that they can run at different time?如何使用flock来编排不同程序的运行,让它们可以在不同的时间运行?
【发布时间】:2013-04-22 08:48:43
【问题描述】:

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

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

如果文件被解锁;然后 锁定文件 ./程序A 解锁文件 菲

有人告诉我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'

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

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

【问题讨论】:

    标签: linux bash flock


    【解决方案1】:

    200> 之间有多余的空间,请在重定向中使用 200>

    那 200 是文件号,200> 重定向那个,而200 > 是废话,因此语法错误。

    供参考:man page of flock

    【讨论】:

    • 在你的代码-w 10 部分中省略超时(根据我链接到的手册页)。
    • 文件号是什么意思?是插座号吗?谢谢
    • @misteryes 我认为官方名称是“文件描述符”,许多不同系统调用返回的数字,例如open()socket()。所以是的,socket 是一种文件描述符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多