내 컴퓨터에는 거의 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`
메시지를 읽는 것만으로도 그 의미를 이해할 수 있도록 메시지를 어떻게 표현해야 하는지 설명해주세요.