বাশে সাসপেন্ড কমান্ড ব্যবহারের ব্যবহারিক উদাহরণ কী?


12

suspendবাশের একটি বিল্টিন কমান্ড। আপনি কখন এই আদেশটি স্বাভাবিকভাবে ব্যবহার করবেন এবং এটিকে দরকারী মনে করবেন?


1
শেলটি নিজেকে fork/exec
প্রতিবিম্বিত করে যতক্ষণ না

1
একটি ইন্টারেক্টিভ শেলের মধ্যে এটি সন্তানের প্রক্রিয়াটিকে টার্মিনালের নিয়ন্ত্রণ পেতে দেয়, যদিও পিতা-মাতা শেলটি টার্মিনালের সাথে ইন্টারঅ্যাক্ট করে না, যা অগোছালো হয়ে যায়।
the_velour_fog 6

2
@ মজাদার, তবে তার পক্ষে কি সেই প্রভাবের জন্য পৃথক কমান্ড চালানো দরকার না?
ইলক্কাচু

প্রযুক্তিগতভাবে, STOPযখন সন্তানের প্রক্রিয়াটি কাঁটাচামচ করে তখন প্যারেন্ট শেলটি স্থগিত করা হয় না (এটি একটি সংকেত পায় না )। আমিও আপনার দ্বিতীয় মন্তব্যে কিছুটা বিভ্রান্ত হয়ে পড়েছি।
কুসালানন্দ

1
@ কুসালানন্দ ঠিক আছে, ডান wait()আমার পক্ষে যুক্তিযুক্ত। আমি বললাম শেল স্থগিত নিজেই Everytime এটা একটি শিশু প্রক্রিয়া কাটাচামচ । কোনও স্টপ সিগন্যাল পাওয়ার বিষয়ে আমি কিছু বলিনি, এতে কোনও অর্থ হবে না।
the_velour_fog

উত্তর:


14

ধরা যাক আপনার জিএনইউ screenএবং tmux(এবং এক্স 11, এবং ভার্চুয়াল কনসোল) উভয়েরই অভাব রয়েছে তবে লগইন শেল এবং অন্য একটি ইন্টারেক্টিভ শেলের মধ্যে স্যুইচ করতে চান।

আপনি প্রথমে কনসোলে লগইন করবেন এবং তারপরে অস্থায়ীভাবে লগইন শেলটি ব্লক করে একটি নতুন শেল শুরু করবেন। সেখানে কিছু কাজ করার জন্য লগইন শেলটি ফিরে পেতে, আপনি চাইবেন suspend। তারপরে আপনি fgইন্টারেটিভ শেলটি সেখানে যা কিছু করেছিলেন তার সাথে চালিয়ে যেতে ফিরে পাবেন।

বস্তুত, কাজ নিয়ন্ত্রণ সঙ্গে, লগ-ইন শেল আপনার সাথে স্যুইচ করতে পারে যে পটভূমি কাজ যেমন ইন্টারেক্টিভ শেল একটি নম্বর ডিম পারে fg %1, fg %2ইত্যাদি, কিন্তু ফিরে লগ-ইন শেল পেতে, আপনি ব্যবহার করতে হবে suspendযদি না আপনি নিজে চেয়েছিলেন kill -s STOP $$

এছাড়াও লক্ষ করুন যে Ctrl+ Zইন্টারেক্টিভ শেলের প্রম্পটে এটি স্থগিত করবে না।

সম্পাদনা:suspend স্ক্রিপ্টের ব্যবহার সম্পর্কে আমার প্রাথমিকভাবে একটি দীর্ঘ অনুমানমূলক অংশ ছিল , তবে যেহেতু কমান্ডটি কাজের নিয়ন্ত্রণ প্রয়োজন এবং অ ইন্টারেক্টিভ শেলগুলি সাধারণত কাজের নিয়ন্ত্রণ রাখে না, তাই আমি এই বিভাগটি মুছে ফেলেছিলাম।


suspendপ্রতিস্থাপন সহ মুছে ফেলা বিভাগ kill -s STOP $$(এটি আসলে উত্তরটির সাথে আর অন্তর্ভুক্ত নয়, তবে এটি অন্যের পক্ষে আকর্ষণীয় হতে পারে):

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

চাইল্ড স্ক্রিপ্ট ( kill -s STOP $$) সাসপেন্ড করে দেবে এবং CONTযখন চালিয়ে যাওয়া ঠিক হবে ঠিক তখন পিতা-মাতার স্ক্রিপ্ট এতে সংকেত পাঠাত।

এটি আপনাকে পিতামাতা প্রক্রিয়া এবং একটি শিশু প্রক্রিয়ার মধ্যে এক ধরণের সিঙ্ক্রোনাইজেশন প্রয়োগ করার সুযোগ দেয় (যদিও পিতামাত শেল প্রক্রিয়া হিসাবে খুব বেসিক কমবেশি অনুমান করা দরকার যে শিশু প্রক্রিয়া স্থগিত করা হয়েছে, যদিও এটি সন্তানের দ্বারা স্থির করা যেতে পারে ফাঁদে ফেলা CONTএবং যদি খুব শীঘ্রই এই সংকেতটি পাওয়া যায় তবে সাসপেন্ড করবেন না)।

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