私のコンピュータには約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 増加
この400個のgitリポジトリをすべてチェックすると、parallel
このメッセージは気になりません。
ただし、これが252個のリポジトリのみを確認し、残りは残すことを意味する場合は、制限を変更する必要があります(制限を変更せずにparallel
252個のリポジトリブロック内のリポジトリを確認するようにしたいが)。
どんなシナリオが起こるのかよくわかりません。このメッセージの意味を明確に説明していただきありがとうございます。
答え1
これは警告です。エラーではありません。
400個のリポジトリをすべてスキャンしますが、特定の時間に252個のスキャンのみが並列に実行されます。
したがって、警告を無視してもかまいません。
その理由は、ファイルハンドルの基本的な制限が現代の標準(1024)に比べてとんでもなく低いためです。増やす理由がないようです。。次の方法でこれを実行できます。
ulimit -n `ulimit -Hn`
メッセージを読むだけでその意味を理解できるように、メッセージをどのように表現するかを説明してください。