ব্যাকগ্রাউন্ড কমান্ড কার্যকর করা শেষ হলে "সম্পন্ন" প্রদর্শন করা থেকে বাশ রোধ করা


34

যদি আমি এর সাথে পটভূমিতে কোনও কমান্ড চালাই &:

sleep 2 &

কমান্ড শেষ হয়ে গেলে আমি "সম্পন্ন" হয়ে যাই। আমি কীভাবে "সম্পন্ন" বার্তাটি এড়াতে পারি?

উত্তর:


34

সাব-শেলের মধ্যে কমান্ডটি চালান:

(sleep 2 &)

দয়া করে নোট করুন যে এটি ব্যবহার করে আপনি কলার শেলের ভিতরে থাকা কাজের নিয়ন্ত্রণ আলগা করুন ( jobsকিছুই দেখায় না)।
মিগিক

36

অন্তর্নির্মিত শেলটি কার্যকর করুন:

$ set +m

এটি "মনিটর মোড" বন্ধ করে কাজ করে যাতে শেলটি পটভূমির কাজগুলি সমাপ্ত করার বিষয়ে রিপোর্ট না করে।

যদিও সাব-শেলের মধ্যে কমান্ডটি চালানো হচ্ছে:

$ (sleep 2&)

... হবে এছাড়াও বার্তা অক্ষম একমাত্র কারণ এটি কাজ করে কারণ মনিটর মোড শুধুমাত্র ইন্টারেক্টিভ শেল জন্য ডিফল্টভাবে সক্রিয় করা হয়। এটি হ'ল স্বয়ংক্রিয়ভাবে "সেট + এম" রয়েছে এমন একটি অতিরিক্ত শেল চালিয়ে সাবসেল বার্তাটি এড়াতে পারে


4
একটি লক্ষ্য করা উচিত, এই আউটপুট ঘুম দ্বারা সঞ্চালিত হয় না যে। এটি বাশ শেল যা আপনাকে সমাপ্ত পটভূমির কাজ সম্পর্কে অবহিত করে।
ফ্লোলো

8

আমি আগের দুটি উত্তর পরিষ্কার করতে চাই। আপনি যা চান তা যদি আপনার শেলের কোনও কমান্ড থেকে সম্পন্ন বার্তাটি না দেখা যায় তবে সেটাই set +mহবে। এটি কেবল আপনার। প্রোফাইলে এবং / অথবা .Bashrc এ রেখে কাজটি করুন। তবে নোট করুন, যদি আপনি এটি টাইপ করেন:

set +m
sleep 2 &
set -m

এবং ঘুম ফাইনালের পরে শেষ হয় set -m, আপনি এখনও সম্পন্ন বার্তা পাবেন।

আপনি যদি একটি একক কমান্ড আমন্ত্রণের জন্য বার্তাটি অক্ষম করতে চান তবে সাব-শেল কৌশলটি (sleep 2 &)যাওয়ার উপায়।

সমস্ত সততার সাথে আমি কেবলমাত্র জানতাম set +m, সুতরাং আমাকে আলোকিত করার জন্য উবুলের কাছে +1 করা। তবে এটি লক্ষণীয় যে আপনি যে দুটি সমাধান চান তা কোনটি আপনি চেষ্টা করছেন তার উপর নির্ভর করে।


0

সাবসেল ছাড়াই আপনি নিম্নলিখিতটি করতে পারেন:

silent_background() {
    { 2>&3 "$@"& } 3>&2 2>-
    disown &>/dev/null  # Close STD{OUT,ERR} for silence if job has already completed
}

silent_background sleep 5

উপর ভিত্তি করে এই উত্তর

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