我希望我的脚本单机运行,我指的是flock,脚本运行得很好,除了Debian7.11。
当我在docker debian 7.11中运行时,它给出了以下错误: flock:./single.sh Text file busy
我下载了debian 9,它运行得很好,如果这个问题不能解决,我不得不尝试另一种方式让脚本单例运行。
我想知道是否有办法解决这个问题。
#!/bin/bash
# singleton exec
[ "${EDR_FLOCKER}" != "$0" ] && exec env EDR_FLOCKER="$0" flock -eno "$0" "$0" "$@" || :
echo "Helloworld"
sleep 20发布于 2019-07-02 22:54:18
我找到了这个失败的原因,flock的论点不可能是脚本本身。修改脚本,如下所示,一切正常。
#!/bin/bash
# singleton exec
[ "${EDR_FLOCKER}" != "$0" ] && exec env EDR_FLOCKER="$0" flock -eno "$0.lock" "$0" "$@" || :
echo "Helloworld"
sleep 20发布于 2021-06-01 15:18:35
要覆盖此bug,您可以重新调用脚本chmod -w script.sh中的写权限,或者如果它应该从根chattr +i script.sh运行,则将其设置为不可变。
https://stackoverflow.com/questions/56838985
复制相似问题