저는 gnu 병렬을 사용하여 pantheon.io의 약 1500개 웹사이트에 대한 백업을 생성하고 있습니다.터미널 명령줄 인터페이스. 명령 은 terminus backup:create
원격 측에서 완료된 응답을 받은 후에만 완료됩니다. 이전 사이트가 완료되기를 기다리는 동안 더 많은 사이트를 백업할 수 있도록, 또는 그렇지 않은 경우 더 완벽하게 실행될 수 있도록 병렬화를 통해 작업 속도를 향상시킬 수 있는 방법이 있는지 궁금합니다. 있다면 Jenkins CI 작업에서 실행됩니다. 감사해요.
#!/bin/bash +x
backup_sites() {
BACKUP=$(terminus backup:create "$*".live)
echo "$*": "$BACKUP"
}
SITE_LIST=$(terminus site:list --field=name)
export -f backup_sites
echo "$SITE_LIST" | parallel backup_sites
답변1
병렬로 실행할 작업 수를 지정하지 않으면 기본값은 CPU 수입니다.
매뉴얼에서:
-제이
각 시스템의 작업 슬롯 수입니다. 최대 N개의 작업을 병렬로 실행합니다. 0은 가능한 한 많은 것을 의미합니다. 기본값은 100%이며, 각 머신의 각 CPU에서 하나의 작업을 실행합니다.
일반적으로 이것은 안전한 방법이지만 컴퓨팅이 아닌 네트워크를 기다리고 있습니다. 그래서 쉽게 수량을 늘릴 수 있습니다. -j 200을 시도해 보겠습니다. 그것은 잘 작동합니다. 이 매개변수를 조정하여 원하는 속도를 얻을 수 있습니다.
그래서 echo "$SITE_LIST" | parallel -j 200 backup_sites
대신echo "$SITE_LIST" | parallel backup_sites