羊群在 debian 7.11 中失败

flock fail in debian 7.11

我想要我的脚本 运行 单例,我指的是 flock,脚本 运行 除了 debian 7.11 之外都很好。

当我在 docker debian 7.11 中 运行s 时,出现以下错误: flock: ./single.sh 文本文件忙

我下载了debian 9,它运行很好,如果这个不能修复,我必须尝试另一种方法来使脚本运行单例。

我想知道是否有办法解决这个问题。

#!/bin/bash
# singleton exec
[ "${EDR_FLOCKER}" != "[=10=]" ] && exec env EDR_FLOCKER="[=10=]" flock -eno "[=10=]" "[=10=]" "$@" || :

echo "Helloworld"
sleep 20

我找到了失败的原因,flock 的参数不能是脚本自身。 如下修改脚本一切正常。

#!/bin/bash
# singleton exec
[ "${EDR_FLOCKER}" != "[=10=]" ] && exec env EDR_FLOCKER="[=10=]" flock -eno "[=10=].lock" "[=10=]" "$@" || :

echo "Helloworld"
sleep 20

要覆盖此错误,您可以从您的脚本 chmod -w script.sh 中调用写权限,或者如果它应该从 root chattr +i script.sh.

运行则使其不可变