동시성 제한으로 인해 특정 프로젝트를 검사할 수 없나요?

동시성 제한으로 인해 특정 프로젝트를 검사할 수 없나요?

내 컴퓨터에는 거의 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 -n ulimit -Hn).
병렬: 경고: 또는 '/etc'에 'nofile'을 늘리세요. /security/limits.conf
병렬: 경고: 또는 /proc/sys/fs/file-max 증가

이 400개의 git 저장소를 모두 확인 하면 parallel이 메시지는 신경쓰지 않습니다.

그러나 이것이 252개의 저장소만 확인하고 나머지는 남겨둔다는 것을 의미한다면 제한을 변경해야 합니다(제한을 변경하지 않고 parallel252개의 저장소 블록에 있는 저장소를 확인하도록 하고 싶지만).

어떤 시나리오가 일어날지 잘 모르겠습니다. 이 메시지의 의미를 명확히 설명해 주시면 감사하겠습니다.

답변1

이것은 경고입니다. 오류가 아닙니다.

400개의 리포지토리를 모두 검사하지만 특정 시간에 252개의 검사만 병렬로 실행됩니다.

따라서 경고를 무시해도 됩니다.

그 이유는 파일 핸들의 기본 제한이 현대 표준(1024)에 비해 터무니없이 낮기 때문입니다.안 늘릴 이유가 없을 것 같네요. 다음 방법으로 이를 수행할 수 있습니다.

ulimit -n `ulimit -Hn`

메시지를 읽는 것만으로도 그 의미를 이해할 수 있도록 메시지를 어떻게 표현해야 하는지 설명해주세요.

관련 정보