একক কমান্ডের সাহায্যে কেউ কীভাবে ব্যাকগ্রাউন্ডে একাধিক প্রোগ্রাম চালাতে পারে?


36

একক কমান্ডের সাহায্যে কেউ কীভাবে ব্যাকগ্রাউন্ডে একাধিক প্রোগ্রাম চালাতে পারে?

আমি নীচে কমান্ড চেষ্টা করেছি, কিন্তু তারা কাজ করে না।

nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'

nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'

একক "আদেশ" কি? বাশ একটি লাইন?
ওলুফ লরেঞ্জেন


আমি স্পষ্টত কিছু মিস করছি, তবে && এর দ্বারা পূর্ববর্তী কমান্ডের প্রস্থান কোড জেনে যাওয়া বোঝানো হয়েছে। আপনি যদি এটি ব্যাকগ্রাউন্ড করেন তবে প্রস্থান কোডটি জানা যাবে না। সেখানে কার্যকরী প্রয়োজন কী ছিল?
রিচ্লভ

উত্তর:


32

শেল সিনট্যাক্স দৃষ্টিকোণ থেকে, / / ... (যদিও অবশ্যই বিভিন্ন শব্দার্থক সহ) অবশ্যই &কম্যান্ড পৃথক করে । সুতরাং এটি ঠিক:;|&&

cmd1 & cmd2 & cmd3 &

1
এটি / পুরোপুরি / সঠিক নয়, ;প্রথমটি শেষ হওয়ার সাথে সাথে পরবর্তী কমান্ডটি শুরু করে। &কমান্ডটি আসলে পটভূমিতে রাখে। কেবল এটি ব্যবহার করে দেখুন:echo foo & echo bar & echo test &
ওলুফ লরেঞ্জেন

1
@ ফিনফ্রেঘ অবশ্যই কেউ সন্দেহ করে না। আমি কেবল বোঝাতে চেয়েছি যে তারা উভয় পৃথক কমান্ড (সিনট্যাক্সের দৃষ্টিকোণ থেকে) কীভাবে চালিত হয় তার কোনও প্রভাব নেই।
স্টাফেন চেজেলাস

প্রশ্নটি একটি "একক কমান্ড" জারি করার বিষয়টি নির্দিষ্ট করে দেওয়ার পরে এটি ঠিক কী জিজ্ঞাসা করা হয়েছিল তা নয়। তন্ন তন্ন আমার উত্তর হল, কারন এটি অনেক কমান্ড একটি সিরিজ, কিন্তু এটা অন্তত একটি করে আউটপুটে একটি একক কমান্ডের শব্দার্থিক ঘনিভূত হয় আছে, পুনঃনির্দেশিত করা যেতে পারে, ইত্যাদি
এলি হঠকারী

"একক কমান্ড সহ একাধিক কমান্ড" একটি অক্সিমোরন বলে মনে হয়, যদিও - এর অর্থ কী? যদি এটি এমন sudoকোনও কিছুর জন্য হয় তবে আপনি একবারে পাসওয়ার্ডটি প্রবেশ করতে পারতেন, তারপরে মোড়ানো bash -cবা অনুরূপ similar
রিচলভ

12

যৌগিক কমান্ড শিরোনামে ব্যাশ ম্যানপেজ বিভাগে দুটি বিকল্প রয়েছে যা কাজ করবে, তালিকা এবং গ্রুপ কমান্ড।

একটি গ্রুপ কমান্ড হ'ল কোঁকড়া ধনুর্বন্ধনী দ্বারা আবদ্ধ কমান্ডের একটি সিরিজ {}। একটি তালিকা একই, প্রথম বন্ধনীতে আবদ্ধ ()। উভয়ই একাধিক কমান্ডের অভ্যন্তরে ব্যাকগ্রাউন্ডে এবং শেষ পর্যন্ত পুরো সংগ্রহটিকে একটি সেট হিসাবে পটভূমিতে ব্যবহার করা যেতে পারে। তালিকাটি একটি সাবশেলে কমান্ডগুলি কার্যকর করে, সুতরাং ভেরিয়েবল অ্যাসাইনমেন্ট সংরক্ষণ করা যায় না।

একটি গ্রুপ কমান্ড কার্যকর করতে:

{ command1 & command2 & } &

আপনি একটি তালিকাতে (কমান্ড) আপনার আদেশগুলি কার্যকর করতে পারেন:

( command1 & command2 ) &

1
আপনাকে স্বাগতম. আমি ম্যানুয়ালটিতে লিঙ্কটি যুক্ত করেছি। নোট করুন যে তালিকা ()বাক্য গঠনটি একটি সাবশেলে বদ্ধ কমান্ডগুলি কার্যকর করে, সুতরাং ভেরিয়েবলগুলি এর মধ্যে সংরক্ষণ করা যায় না।
এলি হেডি

3

অন্য উপায়:

$(command1 &) && command2 & 

না, এটি প্রথম কমান্ডটি চালাবে তারপরে প্রথমে সমাপ্তির পরে এটি আরও একটি কমান্ড চালাবে
রাহুল পাতিল

আপনি &&আপনার প্রশ্নে ব্যবহার করেছেন, এর অর্থ প্রথমে একটি কমান্ড চালান তারপরে যদি সফলভাবে চালানো হয়, পরবর্তী কমান্ডটি চালান if আপনি যদি এটি বিবেচনা না করেন তবে আপনি রান করতে পারেনcommand1 & ; command2 & ;
Persian Persian Gul

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