Xargs সহ অগ্রগতি ট্র্যাকিং


11

আমি ইনপুট প্যারামিটারগুলির সেটটিতে কোনও কমান্ড কার্যকর করতে xargs ব্যবহার করছি:

cat <someinput> | xargs -n 1 -P 5 <somecmd>

ইনপুট ফাইলটি সত্যই দীর্ঘ এবং চালাতে অনেক সময় নেয়। সুতরাং আমি কমান্ড প্রম্পটটি প্রদর্শিত হবে জন্য অপেক্ষা করছি। সম্পন্ন ইনপুট আর্গুমেন্টগুলির জন্য কি কোনও অগ্রগতি বার প্রদর্শন করার কোনও উপায় আছে?

আমি 'বার' ব্যবহার করার চেষ্টা করেছি তবে আমি সর্বদা একটি 'অসীম' থ্রুপুট পেয়েছি। দেখে মনে হচ্ছে xargs কমান্ডগুলি কার্যকর করার আগে পুরো ইনপুটটি পড়ে।

http://i.stack.imgur.com/5Wsgx.gif

উত্তর:


13

আপনার যদি জিএনইউ সমান্তরাল থাকে তবে আপনি চালাতে পারেন:

cat <someinput> | parallel --bar -P 5 <somecmd>

জিএনইউ সমান্তরাল হ'ল একটি সাধারণ প্যারাল্লালাইজার এবং একই মেশিনে বা আপনার একাধিক মেশিনে ssh অ্যাক্সেস থাকা সমান্তরালে কাজ চালানো সহজ।

যদি আপনার কাছে 32 টি আলাদা চাকরি থাকে তবে আপনি 4 টি সিপিইউতে চালাতে চান, সমান্তরাল করার জন্য একটি সরল অগ্রসর উপায় হ'ল প্রতিটি সিপিইউতে 8 টি কাজ চালানো:

সাধারণ সময়সূচী

সিএনইউ সক্রিয় রাখা এবং এভাবে সময় সাশ্রয় করা - জিএনইউ সমান্তরাল পরিবর্তিত হয়ে একটি নতুন প্রক্রিয়া তৈরি করে

জিএনইউ সমান্তরাল শিডিউলিং

স্থাপন

একটি ব্যক্তিগত ইনস্টলেশন রুট অ্যাক্সেস প্রয়োজন হয় না। এটি করে 10 সেকেন্ডের মধ্যে এটি করা যেতে পারে:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

জন্য অন্যান্য ইনস্টলেশন অপশন দেখতে http://git.savannah.gnu.org/cgit/parallel.git/tree/README

আরও জানুন

আরও উদাহরণ দেখুন: http://www.gnu.org/software/parallel/man.html

পরিচিতি ভিডিওগুলি দেখুন: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

টিউটোরিয়ালটি দিয়ে যান: http://www.gnu.org/software/parallel/parallel_tutorial.html

সমর্থন পেতে ইমেল তালিকার জন্য সাইন আপ করুন: https://lists.gnu.org/mailman/listinfo/parallel


1
আপনাকে অনেক ধন্যবাদ (উত্তর এবং সফ্টওয়্যার লেখার জন্য!), এটি দুর্দান্ত কাজ করে!
গ্রেগ সাদেটস্কি

9

আপনি পিভি ব্যবহার করতে পারেন:

cat <someinput> | pv -p -s sizeof_someimput | xargs -n 1 -P 5 <somecmd>

এটির সাহায্যে আপনি জানতে পারবেন সামিম্পট পড়ার জায়গা কোথায়, তাই আপনি প্রায় সোম্পিম্টের চিকিত্সা জানেন।


1
আর একটি ঘন ঘন ব্যবহারের ক্ষেত্রে এটি FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
সন্ধানের

3

আপনি যদি কেবল অগ্রগতির সাধারণ ইঙ্গিতটি সন্ধান করেন তবে সহজ পদ্ধতিটি হ'ল যে আদেশটি আপনি করতে চান তা করার আগে কেবল প্রতিধ্বনি করা।

উদাহরণ: cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'

-I{}{}প্রক্রিয়াধীন বর্তমান স্ট্রিং সেট করে

sh -cআপনাকে একাধিক কমান্ড কার্যকর করতে অনুমতি দেবে (দ্রষ্টব্য: প্রতিটি কমান্ডের পরে আধা অন্তর্ভুক্ত সহ অর্ধ-কোলন প্রয়োজনীয় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.