在 bash 脚本的开头,我运行集群以确保脚本不会同时运行两次。 该脚本的一部分是显示 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 - 群 - 脚本已完成但仍被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312372/