재귀 bash 기능을 병렬화하는 방법은 무엇입니까?

재귀 bash 기능을 병렬화하는 방법은 무엇입니까?

curl기본적으로 링크 집합의 끝점을 가져와 각 링크를 다시 (다른 링크 집합에 대해) 재귀적으로 컬링하는 bash 함수가 있습니다 .

task() {
  link="$1"
  response=$(curl "$link")
  
  # save response data to file...

  # process response to find another set of links and save to variable x...
  if condition
      echo "$x" | while read -r link
        task "$link"
}

위 코드는 약 100개의 컬 연산을 생성하는데 시간이 오래 걸립니다. 병목 현상을 일으키는 것은 주로 엔드포인트의 응답 시간(처리 시간이 아님)입니다.

상황

  1. 링크 수에 대한 정보가 없습니다. 상위 링크를 먼저 사용 하지 않으면 curl하위 링크를 가질 수 없습니다 .
  2. 각 응답은 curl link자동으로 파일에 저장되어야 합니다.

이 프로세스를 병렬화하는 것이 가능합니까? 솔루션에 필요한(또는 더 우아한) GNU parallel다른 외부 도구가 있으면 괜찮습니다.

답변1

너비 우선 스파이더를 템플릿으로 사용할 수 있습니까?https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer

관련 정보