შემთხვევითი არჩევანი მოათავსეთ იმ shell-ის შიგნით, რომელიც თითოეული დავალებისთვის ირთვება. გარე shell-ში ბრძანების ჩანაცვლების გაშლა მნიშვნელობას ირჩევს მანამ, სანამ xargs დაიწყებს მუშაობას.

ერთ ხაზზე ერთი პროქსის URL-ის მქონე დამოწმებული proxies.txt-ით საჯარო კანდიდატები შეიძლება მოვიდეს უფასო პროქსების სიიდან; თითოეული ჩანაწერი ჩამოაყალიბეთ 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-ს ერთ არგუმენტად ინახავს. ქვედა ხაზი იკავებს sh-ის $0 პოზიციას და URL-ს $1-ში ტოვებს.

თითოეული შვილობილი shell დამოუკიდებლად უშვებს shuf-ს. შემთხვევითმა არჩევანმა შეიძლება იგივე პროქსი არაერთხელ აირჩიოს; ეს არ არის წრიული განრიგი და არც სხვადასხვა გასვლის მისამართის გარანტია.

აშკარად ცარიელი გვერდის ავლის სია ხელს უშლის მემკვიდრეობით მიღებულ no_proxy პარამეტრს არჩეული შუამავლის გვერდის ავლაში. მაგალითი პასუხების სხეულებს უგულებელყოფს; პარალელური ჩამოტვირთვების შენახვისას გამოიყენეთ ცალკეული გამოსავალი ბილიკები.

დაკავშირებული სტატიები