gpt4 book ai didi

linux - flock - 脚本已完成但仍处于锁定状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:27 24 4
gpt4 key购买 nike

在我的 bash 脚本开始时,我运行 flock 以确保脚本不会同时运行两次。脚本的一部分是显示 xclock,但作为后台命令。所以我看到时钟并且脚本完成(时钟仍然明显显示)。但是当我想重新启动脚本时,它不允许我这样做,因为它仍然处于锁定状态。好像只有xclock关闭才解除锁。

我不明白的是,当我将 x-app 作为后台进程启动并且脚本完成时,为什么锁仍然存在。 x-app 进程是执行脚本的进程的子进程吗?这里是脚本

#!/bin/bash

fd=200
eval "exec $fd>/tmp/test.lock"
if flock -n $fd; then
xclock &
else
echo "locked"
fi

如果有人能解释一下,我将不胜感激?

谢谢,拉尔夫

最佳答案

xclock 进程继承了锁定文件的打开文件描述符,以及对该文件的锁定。您可以通过使用 &- 重定向在该过程中关闭它。

#!/bin/bash

fd=200
eval "exec $fd>/tmp/test.lock"
if flock -n $fd; then
eval "xclock $fd>&- &"
else
echo "locked"
fi

关于linux - flock - 脚本已完成但仍处于锁定状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com