并行限制是否会导致某些项目无法检查?

并行限制是否会导致某些项目无法检查?

我的机器上有近 400 个 git 存储库。

这是我用来集体查找他们的状态的脚本:

function Check() 
{
    gitFolder="$1"
    parent=$(dirname $gitFolder);
    Status=$(git -C $parent status)
    if [[ $Status == *Changes* ]] || [[ $Status == *Untracked* ]]; then
        Info $parent;
        git -C $parent status --porcelain
        if [ -d /Policies ]; then
            /Policies/Run.sh $parent
            /Policies/Git/Run.py $parent
        fi
        Divide
    elif [[ $Status == *ahead* ]]; then
        Warning "Push $parent";
        Divide
    elif [[ $Status == *diverged* ]]; then
        Warning "Sync $parent";
        Divide
    fi
}
export -f Check
FindGits | parallel -j0 Check

FindGitsInfo以及其他函数通过符号导入. ScriptPath

但是,当我运行它时,我看到以下消息:

并行:警告:只有足够的文件句柄来并行运行 252 个作业。
并行:警告:尝试运行 'parallel -j0 -N 252 --pipe parallel -j0'
并行:警告:或增加 'ulimit -n' (尝试:ulimit -n ulimit -Hn
并行:警告:或增加 /etc 中的 'nofile' /security/limits.conf
并行:警告:或增加 /proc/sys/fs/file-max

如果parallel检查所有这 400 个 git 存储库,那么我不关心此消息。

但如果这意味着它只检查 252 个存储库,而留下其余的,那么我应该更改限制(尽管我宁愿不更改限制并让parallel检查 252 个存储库块中的存储库)。

我不确定会发生哪种情况。如果能澄清此消息的含义,我们将不胜感激。

答案1

这是一个警告。不是错误。

它会检查所有 400 个存储库,但在任何给定时间只会并行运行 252 个检查。

因此您可以安全地忽略该警告。

原因是文件句柄的默认限制按照现代标准(1024)低得离谱,并且似乎没有理由不增加它。您可以通过以下方式做到这一点:

ulimit -n `ulimit -Hn`

请帮助解释该消息应该如何措辞,以便您只需阅读它就可以理解其含义。

相关内容