ব্যাশের সমান্তরালে কার্ল অনুরোধগুলি কার্যকর করুন


23

ব্যাশ স্ক্রিপ্ট থেকে 5 টি curlঅনুরোধ কার্যকর করার সর্বোত্তম উপায় কী parallel? পারফরম্যান্সের কারণে আমি তাদের সিরিয়ালে চালাতে পারি না।


1
আপনি কি নিজের সমাধানের অংশগুলি অনুসন্ধান করার চেষ্টা করেছেন? আর একটি এসএফ প্রশ্ন মনে হচ্ছে ঠিক আপনি যা চেয়েছিলেন তা হ'ল
থুনি

উত্তর:


34

কোনও প্রক্রিয়াটির পটভূমিতে কমান্ডের পরে '&' ব্যবহার করুন এবং তাদের সমাপ্তির জন্য অপেক্ষা করতে 'অপেক্ষা করুন'। আপনার যদি একটি উপ-শেল তৈরি করতে চান তবে কমান্ডগুলির আশেপাশে '()' ব্যবহার করুন।

#!/bin/bash

curl -s -o foo http://example.com/file1 && echo "done1" &
curl -s -o bar http://example.com/file2 && echo "done2" & 
curl -s -o baz http://example.com/file3 && echo "done3" &

wait

সহজ, তবে প্রথম পদক্ষেপের জন্য কার্যকর। হোস্টনেম বা পুনরাবৃত্তির সংখ্যার মতো জিনিসগুলি পরিবর্তনের প্রয়োজন হলে দ্রুত হ্যাকি পায়। ধন্যবাদ।
ক্রিস

10

সমান্তরালভাবে প্রক্রিয়াগুলি চালনার জন্য xargs এর একটি "-P" প্যারামিটার রয়েছে। উদাহরণ স্বরূপ:

wget -nv http://en.wikipedia.org/wiki/Linux -O- | egrep -o "http://[^[:space:]]*.jpg" | xargs -P 10 -r -n 1 wget -nv

তথ্যসূত্র: http://www.commandlinefu.com / কম্যান্ডস / ভিউ / 3269 / সমান্তরাল- ফাইল-ডাউনলোডিং- উইথ- উইজেট


6

আমি এর মতো কাজের জন্য gnu সমান্তরাল ব্যবহার করি ।


4
আপনি কল curlকরার জন্য একটি উদাহরণ প্রদান করতে পারেন gnu parallel?
এম

হ্যাঁ, সমান্তরাল খুব ভাল বলে মনে হচ্ছে এবং একই অনুরোধটি 100 বার প্রেরণ করা সহজ। তবে 100 টি বিভিন্ন কার্ল অনুরোধ প্রেরণের সমান্তরাল কীভাবে ব্যবহার করতে হয় তার একটি উদাহরণ এই উত্তরটিকে আরও ভাল করে তুলবে।
рüффп

1
উদাহরণস্বরূপ: gist.github.com/CMCDragonkai/5914e02df62137e47f32
દર્પણ

0

এখানে একটি curlউদাহরণ এখানে xargs:

$ cat URLS.txt | xargs -P 10 -n 1 curl

উপরের উদাহরণটিতে curlপ্রতিটি URL গুলি সমান্তরালে একসাথে 10 হওয়া উচিত। -n 1সেখানে যাতে xargsশুধুমাত্র থেকে 1 টি লাইন ব্যবহার URLS.txtফাইল প্রতি curlসম্পাদন।

প্রতিটি xargs পরামিতি কী করে:

$ man xargs

-P maxprocs
             Parallel mode: run at most maxprocs invocations of utility at once.
-n number
             Set the maximum number of arguments taken from standard input for 
             each invocation of utility.  An invocation of utility will use less 
             than number standard input arguments if the number of bytes 
             accumulated (see the -s option) exceeds the specified size or there 
             are fewer than number arguments remaining for the last invocation of 
             utility.  The current default value for number is 5000.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.