Змясціце выпадковы выбар унутры shell, які запускаецца для кожнага задання. Раскрыццё падстаноўкі каманды ў знешнім shell выбірае значэнне да таго, як xargs пачне працу.

З правераным proxies.txt, дзе ў кожным радку адзін URL проксі, публічныя кандыдаты могуць брацца са спіса бясплатных проксі; фарматуйце кожны запіс пратаколам, які падтрымлівае curl:

printf '%s\0' 'https://a.example/one' 'https://b.example/two' |
  xargs -0 -n 1 -P 4 sh -c '
    proxy=$(shuf -n 1 proxies.txt) || exit 1
    [ -n "$proxy" ] || exit 1
    curl --fail --silent --show-error --max-time 30 \
      --proxy "$proxy" --noproxy "" --output /dev/null "$1"
  ' _

-n 1 дае адно URL кожнай камандзе, а -P 4 дазваляе да чатырох каманд адначасова. Увод, падзелены нулямі, захоўвае URL як адзін аргумент. Падкрэсліванне займае пазіцыю $0 у sh, пакідаючы URL у $1.

Кожны дачэрні shell запускае shuf незалежна. Выпадковы выбар можа ўзяць той самы проксі больш за адзін раз; гэта не кругавое планаванне і не гарантыя розных адрасоў выхаду.

Яўны пусты спіс абыходу не дазваляе ўспадкаванай наладзе no_proxy абыйсці абраны пасярэднік. Прыклад адкідае целы адказаў; выкарыстоўвайце асобныя шляхі вываду пры захаванні паралельных загрузак.

Падобныя артыкулы