পটভূমিতে একাধিক নোহপ কমান্ড চালানো


12

সেন্টিমিডি 1 এবং সেন্টিমিডি 2 কমান্ড পেয়েছি। দুটির মধ্যে, সেমিডি 2 শেষ হতে আরও বেশি সময় নেয়। Cmd2 এবং তারপরে cmd1 চালানো দরকার run

এগুলি নিম্নলিখিত উপায়ে চালানোর চেষ্টা করেছেন:

bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &

অথবা

bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &

তবে উভয় সময়ই আমি দেখতে পাচ্ছি যে সেন্টিমিডি 1 সেমিডি 2 সমাপ্ত হওয়ার জন্য অপেক্ষা করছে না এবং ফলাফল 1 পূরণ হবে।

যখন উভয়ই নোহুপ প্রক্রিয়া হওয়া উচিত এবং পটভূমিতে চালানো উচিত তখন কীভাবে সেমিডি 1 রান করবেন?


এই প্রশ্নটি ইতিমধ্যে unix.stackexchange.com
রাহুল পাতিল

2
আমি আমার মৃত্যুদন্ড কার্যকর করার আদেশটি বজায় রাখতে চাইলে ইউনিট.স্ট্যাকেক্সেঞ্জার্স / প্রশ্নগুলি / 0067০০6/২ এর প্রশ্নটি কিছুটা আলাদা। আমি অন্য প্রশ্নটি বুঝতে ভুল হলে দয়া করে আমাকে সংশোধন করুন।
ব্যবহারকারী 33767

উত্তর:


12

আপনি উভয় তৈরি cmd1এবং cmd2সমান্তরালভাবে চালানো। আপনি বলেছিলেন: "ব্যাকগ্রাউন্ডে সেন্টিমিডি 2 শুরু করুন এবং এর সাথে কোনও সম্পর্ক বিচ্ছিন্ন করুন। পটভূমিতে সেন্টিমিডি 1 শুরু করুন এবং এর সাথে কোনও সম্পর্ক বিচ্ছিন্ন করুন ” আপনি বোঝাতে চেয়েছিলেন: "ব্যাকগ্রাউন্ডে সেন্টিমিডি 2 শুরু করুন; এটি সম্পূর্ণ হয়ে গেলে, সেন্টিমিডি 1 শুরু করুন (ব্যাকগ্রাউন্ডেও)। যেহেতু ব্যাকগ্রাউন্ড টাস্কের সাথে আর কোনও সংযুক্তি নেই, আপনাকে একটি ব্যাকগ্রাউন্ড টাস্ক তৈরি করতে হবে যা সেমিডি 2 এর পরে সেমিডি 1 সম্পাদন করে। এটি cmd2; cmd1(বা বরং cmd2 && cmd1cmd2 সফল হলে কেবল cmd1 চালানো) এবং এর nohupজন্য ব্যাকগ্রাউন্ডে একটি শেল চলার জন্য আপনাকে বলতে হবে to

nohup sh -c './cmd2 >result2 && ./cmd1 >result1' &

ধন্যবাদ। এটা ঠিক কাজ করছে। হ্যাঁ, আমি যা ভাবছিলাম তা স্থির করে, প্রথম সেন্টিমিডিটিকে ব্যাকগ্রাউন্ডে যাওয়ার পরে এটি দ্বিতীয় কমান্ডকে প্রভাবিত করে না, যা প্রথম কমান্ডটি শেষ হওয়ার অপেক্ষায় থাকা চাইলেও এটি শুরু হয়। ব্যাকগ্রাউন্ডে কমান্ড প্রেরণের সম্পর্কে আমার ম্যানুয়ালটি পড়তে হবে।
ব্যবহারকারী 33767

3

আপনি যদি নোহুপ ব্যবহার না করতে আপত্তি করেন:

{ command1 >result1 2>&1 && command2 >result2 2>&1 ; } & disown

এটি পরীক্ষা করে দেখবে। তবে বর্তমানে গিলসের উত্তর নিয়ে যাবে যেখানে কমান্ডটি sh দিয়ে মোড়ানো আছে। যাইহোক ধন্যবাদ
ব্যবহারকারী 33767

এটি একটি খারাপ ধারণা। কনসোল থেকে ব্যবহারকারী লগআউট করার সময় এটি সেশনটি নষ্ট করে দেবে।
mootmoot

@ মুটমুট এটি উদ্দেশ্য হিসাবে কাজ করে, নিজের জন্য এটি পরীক্ষা করুন; অভিভাবক শেলটি প্রস্থান করলে কমান্ডগুলি SIGHUP পাবেন না receive
আরটিম

হ্যাঁ, আপনি ক্রন্ড / ক্রন্টব ব্যবহার করে কমান্ডটি চালনা করলে এটি শেল নিরাপদ। তবে এটি pty / xterm / ssh নিরাপদ নয়। unix.stackexchange.com/questions/3886/…
মটমুট

2

সহজভাবে ব্যবহার করুন:

nohup ./cmd2>result2 & nohup ./cmd1>result1 & nohup ./cmd3>result3 &

একাধিক কমান্ড চালানোর সময় ঠিক আছে, আমি মৃত্যুদন্ড কার্যকর করার যথাযথ ক্রমটি বজায় রাখতে চেয়েছিলাম প্রথমে cmd2 এবং তারপরে cmd1 এবং উপরের কমান্ডটি দিয়ে এটি ঘটছে না। ধন্যবাদ
ব্যবহারকারী 33767

0

আপনি cmd2 এবং cmd1 দিয়ে ঠিক কী করছেন তা আমাদের জানান। এটি আপনার কমান্ড থেকে আপনি যে কাজ এবং আউটপুট চান তা নির্ভর করে। আপনি যদি কমান্ডের সাথে দুবার কী প্রবেশের চাপ দিয়ে সমস্যার মুখোমুখি হন তবে আমার পোস্টটি দ্বারা এটি বের করা যেতে পারে

আপনি এই পথে যেতে পারেন

nohup `cmd2 && ccmd1` > Output.out 2> Error.err < /dev/null & 

নীচে প্রদত্ত স্ক্রিনশটটি দেখুন, আমি এখানে 3 টি কমান্ড ব্যবহার করছি এবং সকলেই একের পর এক ক্রমিক ক্রম চালাচ্ছি। আমি এই কাজের জন্য ব্যাকটিক্স ব্যবহার করেছি। স্ক্রিনশটে আপনি তারিখের সময় স্ট্যাম্পও পর্যবেক্ষণ করতে পারেন। স্লিপ কমান্ডের 60 সেকেন্ড রয়েছে, অতএব 60 সেকেন্ড পরে আমার পরবর্তী কমান্ডটি সফলভাবে চালিত হবে। আমি জবস কমান্ডটি চেক করতে ব্যবহার করেছি যে কোনও কমান্ড এখনও পটভূমিতে চলছে। এখানে না. আপনি দেখতে পারেন চাকরি 1।

nohup একাধিক কমান্ড

এই স্ক্রিনশটটি যদি এই লিঙ্কে দৃশ্যমান না হয় তবে উপলভ্য

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