羊群在 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
.
运行则使其不可变
我想要我的脚本 运行 单例,我指的是 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
.