![并行限制是否会导致某些项目无法检查?](https://linux22.com/image/215156/%E5%B9%B6%E8%A1%8C%E9%99%90%E5%88%B6%E6%98%AF%E5%90%A6%E4%BC%9A%E5%AF%BC%E8%87%B4%E6%9F%90%E4%BA%9B%E9%A1%B9%E7%9B%AE%E6%97%A0%E6%B3%95%E6%A3%80%E6%9F%A5%EF%BC%9F.png)
我的机器上有近 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
FindGits
和Info
以及其他函数通过符号导入. ScriptPath
。
但是,当我运行它时,我看到以下消息:
并行:警告:只有足够的文件句柄来并行运行 252 个作业。
并行:警告:尝试运行 'parallel -j0 -N 252 --pipe parallel -j0'
并行:警告:或增加 'ulimit -n' (尝试:ulimit -nulimit -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`
请帮助解释该消息应该如何措辞,以便您只需阅读它就可以理解其含义。