群在Debian 7.11中失败

时间:2019-07-01 16:13:36

标签: shell singleton flock

我希望我的脚本运行单例,我指的是flock,除了debian 7.11之外,脚本运行良好。

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

我下载了debian 9,它运行良好,如果不能解决,我必须尝试另一种方法使脚本单例运行。

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

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

echo "Helloworld"
sleep 20

2 个答案:

答案 0 :(得分:1)

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

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

echo "Helloworld"
sleep 20

答案 1 :(得分:0)

要覆盖此错误,您可以从脚本 chmod -w script.sh 中调用写入权限,或者如果它应该从根 chattr +i script.sh 运行,则使其不可变。