আমি একের পর এক নয় একই সাথে লুপে কমান্ডগুলি সম্পাদন করতে চাই


5

আমি এমন একটি লুপ লিখতে চাই ('for') যা কয়েকবার এক্স 'এক্স' করবে। তবে একের পর এক ক্রমানুসারে ক্রিয়া সম্পাদন করার পরিবর্তে আমি তাদের একসাথে সম্পাদন করতে চাই (একই সাথে প্যারেলেলে)। কিভাবে এটা অর্জন করা যেতে পারে? স্ক্রিপ্ট বা একটি ওলাইনার ঠিক আছে।

কেবল উদাহরণ:

for i in 1 2 3 4 5; do dd if=/dev/zero of=/tmp/disk$i bs=10M count=10; done

উত্তর:


3

Dennisআপনার স্যাম্পল কেসের সাথে এটি বেশিরভাগ উত্তর দিয়ে গেছে (সেখানে +1)।

আমি $ এ (সিক 1 1); কর \
 ডিডি যদি = / দেব / শূন্য = / টিএমপি / ডিস্ক $ i বিএস = 10 এম কাউন্ট = 10 এবং \
সম্পন্ন; অপেক্ষা করুন

' \' এবং নতুন লাইনগুলি কেবল পঠন-পরিতোষের জন্য, আপনি সমস্ত একটি লাইনে লিখতে পারেন।


এটি নিয়ন্ত্রণের ক্রম এবং বাক্য গঠন সম্পর্কে আরও ভাল ধারণা দেয়,

আমি $ এ (সিক 1 1); কর \
 (\
  প্রতিধ্বনি "$ আমি শুরু করছি ..."; \
  ডিডি যদি = / দেব / শূন্য = / টিএমপি / ডিস্ক $ i বিএস = 10 এম কাউন্ট = 10; \
  প্রতিধ্বনি "done আমি করলাম ..."; \
 ) এবং \
সম্পন্ন; অপেক্ষা করুন

যেহেতু ওপ প্রশ্নটি বাশের সাথে ট্যাগ করেছে, আপনাকে ব্যবহার করতে হবে না seq। আপনি হয় প্রশ্নে প্রদর্শিত বা এটির একটি উপায় অনুসারে এটি করতে পারেন: for i in {1..5}(বাশ> = 3.0) বা for ((i=1; i<=5; i++))(বাশ> = 2.04)। তবে, অন্যান্য শাঁস সাথে সামঞ্জস্যের জন্য, seqব্যবহৃত হতে পারে যদি এ ধরনের FreeBSD 'র বা OS X এর একটি বাসদ সিস্টেমে করছি, তাহলে আপনি ব্যবহার করতে হবে jot
ডেনিস উইলিয়ামসন

@ ডেনিস, এটি যথেষ্ট পরিসীমা বিকল্পগুলি সংগ্রহ করে :-)। আমি seqবেশিরভাগ অভ্যাস থেকে ব্যবহার করেছি ... forলুপগুলি ভাল; seqআপনাকে সহজেই ফর্ম্যাট করতে দেয় যা আমার মন এটিকে আটকে রাখার কারণ হতে পারে।
নিক

আমি আমার স্ক্রিপ্টগুলি পোর্টেবল (পসিক্স) তৈরি করতে চাই যাতে সেগুলি যতটা সম্ভব সিস্টেমে ব্যবহার করা যায়। আমি সাথে যাব seq। সমস্ত উত্তরদাতাদের ধন্যবাদ।
ফিলিপ আলভারেজ

2

কমান্ডের &শেষে একটি অ্যাম্পারস্যান্ড ( ) যুক্ত করুন এবং ddপ্রতিটি ব্যাকগ্রাউন্ডে রান করুন এবং এর ; waitপরে যুক্ত করুন done

কিছু ক্ষেত্রে, xargs --max-args=MAX-ARGS --max-procs=MAX-PROCSব্যবহার করা যেতে পারে।


1

আপনার যদি জিএনইউ সমান্তরাল http: // www.gnu.org/software/parallel/ ইনস্টল করা থাকে তবে আপনি এটি করতে পারেন:

seq 1 5 | parallel dd if=/dev/zero of=/tmp/disk{} bs=10M count=10

আরও জানার জন্য জিএনইউ সমান্তরালের জন্য অন্তর্ভুক্ত ভিডিওটি দেখুন: http://www.youtube.com/watch?v=OpaiGYxkSuQ

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