ইউনিক্স কমান্ড লাইনে Ctrl + Z এবং Ctrl + C এর মধ্যে কী আলাদা?


187

আমি ম্যাক ওএস এক্স টার্মিনাল ব্যবহার করছি। এবং আমি কিছু প্রোগ্রাম বন্ধ করতে Ctrl+ Zবা Ctrl+ ব্যবহার করি C। তবে আমি বুঝতে পেরেছিলাম যে তারা ঠিক কী করছে আমি জানি না। তারা কি এবং তাদের মধ্যে পার্থক্য কি?

এই প্রশ্নটি সপ্তাহের একটি সুপার ব্যবহারকারী প্রশ্ন ছিল । আরও তথ্যের জন্য
13 মার্চ, 2011 ব্লগ এন্ট্রি পড়ুন বা সপ্তাহের নিজস্ব প্রশ্ন জমা দিন

উত্তর:


249

Control+ Zপ্রক্রিয়াটিকে সিগন্যাল প্রেরণ করে স্থগিত করার জন্য ব্যবহৃত হয় SIGSTOP, যা প্রোগ্রাম দ্বারা বাধা দেওয়া যায় না। যদিও Control+ Cসিগন্যাল দিয়ে কোনও প্রক্রিয়া হ'তে ব্যবহৃত হয় SIGINTএবং কোনও প্রোগ্রাম দ্বারা বাধা দেওয়া যেতে পারে তাই এটি প্রস্থান করার আগে এটি নিজের স্বচ্ছ পরিষ্কার করতে পারে বা একেবারে প্রস্থান করতে পারে না।

আপনি যদি কোনও প্রক্রিয়া স্থগিত করেন তবে এটি স্থগিত করা হয়েছে তা জানাতে শেলের মধ্যে এটি প্রদর্শিত হবে:

[1]+  Stopped                 yes

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

fg

স্থগিত করা একটি প্রোগ্রামের সাথে এটিকে আবার পূর্বের স্থানে নিয়ে আসবে।

এবং কমান্ড চালাচ্ছি

bg

স্থগিত হওয়া কোনও প্রোগ্রামের সাথে এটি ব্যাকগ্রাউন্ডে চলতে দেবে (যদিও প্রোগ্রামটির আউটপুট টিটিওয়াইতে যাবে যদিও)।

আপনি যদি কোনও স্থগিত প্রোগ্রামটি হত্যা করতে চান, আপনাকে fgপ্রথমে এটি ফিরিয়ে আনতে হবে না, আপনি কেবল কমান্ডটি করতে পারেন:

kill %1

আপনার যদি একাধিক সাসপেন্ড কমান্ড থাকে তবে চলমান

jobs

এগুলি তাদের তালিকাবদ্ধ করবে:

[1]-  Stopped                 pianobar
[2]+  Stopped                 yes

ব্যবহার %#, যেখানে #কাজ নম্বর (থেকে বর্গাকার বন্ধনী মধ্যে অন্যতম jobsআউটপুট) সঙ্গে bg, fgঅথবা kill, যে কাজ কর্ম করতে ব্যবহার করা যাবে।


3
sttyকমান্ডটি ব্যবহার করে কোন কীগুলি কোন কাজ করে তা আপনি পরিবর্তন করতে পারেন । উদাহরণস্বরূপ stty susp ^Z বা stty intr ^C
রেডগ্রিটিব্রিক

7
প্রকৃতপক্ষে, এটি SIGTSTP প্রেরণ করে, যা বাধা দেওয়া যায়।
সাইমন রিখটার

2
কুল! সুতরাং যদি কোনও প্রোগ্রাম যদি Ctrl + C দিয়ে মরে যেতে অস্বীকার করে তবে আপনি কীভাবে এটি মারতে বাধ্য করবেন?
আদিত্য এমপি

2
@ অ্যাডটিএমনন এক্সিকিউটেবল নামটি সন্ধান করুন, উদাহরণস্বরূপ amarokএবং চালান killall amarok, বা চালান ps auxএবং এক্সিকিউটেবল নাম এবং রানের পাশের প্রক্রিয়া আইডিটি সন্ধান করুন kill {process id}
ব্রুনো ফিঙ্গার

22

Ctrl + Z প্রক্রিয়াটি SIGTSTP এর সাথে স্থগিত করে, আপনি এটি পরে আবার চালু করতে পারেন। সিআরটিএল + সি প্রসেসটিকে SIGINT দিয়ে হত্যা করে, যা লক্ষ্য দ্বারা পরিচালিত / উপেক্ষা না করা অবধি প্রক্রিয়াটি সমাপ্ত করে, সুতরাং আপনি এটিকে আরম্ভ করতে পারবেন না। এছাড়াও একটি সিগস্টপ রয়েছে যা প্রেরণ করতে পারে kill()এবং প্রক্রিয়াটি বাধা দিতে পারে না। SIGCONT হ'ল SIGSTOP এবং SIGTSTP উভয়েরই পাল্টা যা প্রক্রিয়াটিকে স্থগিত করে।


না, এটি সিগস্টটিপ, সিগস্টপ নয় এবং এটি বাধা দেওয়া যেতে পারে।
sch

@ শ্যাচ, এখন কি ঠিক আছে?
বেন ভয়েগট

হ্যাঁ, যদিও সিটিআরএল-জেড (এবং সিটিআরএল-সি) কোনও প্রক্রিয়া গ্রুপকে (টার্মিনালের অগ্রভাগ প্রক্রিয়া গোষ্ঠী) সেই সংকেতটি প্রাপ্তির কারণ হিসাবে অগত্যা কেবল একটি প্রক্রিয়া নয়। এছাড়াও টার্মিনালের অগ্রভাগ প্রক্রিয়া গোষ্ঠীতে নয় এমন প্রসেসগুলিতে প্রেরণ করা সিগটিটিন এবং সিগটিটিও নোট করুন যখন তারপরে / এটি থেকে পড়তে বা লিখতে চেষ্টা করুন, এটি তাদের স্থগিতও করে।
sch

@ এসসিএইচ: প্রক্রিয়া বনাম গোষ্ঠীটি কীভাবে কেবল সিগন্যাল প্রেরণ করা যায় তার মধ্যে পার্থক্য নয়? আইআইআরসি kill()আপনাকে SIGSTOPঠিক একটি গ্রুপে পাঠাতে দেয় ।
বেন ভয়েগট

হ্যাঁ, আমার কমান্ডটি ছিল আপনার সিটিআরএল-জেড প্রক্রিয়াটি স্থগিত করে ... যা মানুষকে ভেবে ভ্রান্ত করতে পারে যে এটি কেবল একটি প্রক্রিয়াতে প্রেরণ করা হয় যখন এটি আসলে কাজ বা প্রক্রিয়া গোষ্ঠী
sch

17

CTRL + Z একটি কাজ থামিয়ে (বিরতি দেয়)

CTRL + C একটি চাকরি সমাপ্ত করে

সিটিআরএল + সি দিয়ে আপনি প্রক্রিয়াটি আরম্ভ করতে পারবেন না তবে সিটিআরএল + জেডের সাহায্যে কমান্ড প্রম্পটে প্রবেশ করে কাজটি আবার শুরু করা যেতে পারে:

fg %1

যদি আপনার একাধিক প্রক্রিয়া বিরতি থাকে তবে আপনার করা উচিত

jobs

আউটপুট দেখতে এবং যেমন পুনরায় শুরু করতে উপযুক্ত নম্বর নির্বাচন করুন

fg %3

তালিকার তৃতীয় কাজটি আবার শুরু করে। এছাড়াও আপনার সাথে পটভূমিতে কাজ চলতে পারে

bg %n

যেখানে এন চাকরি সংখ্যা।


এটি চাকরি (প্রক্রিয়া গোষ্ঠী), এমন প্রক্রিয়া নয় যা সিটিআরএল-সি, সিটিআরএল-জেড, fg এবং বিজি চুক্তি করে।
sch

3
Cntrl + Z pause the currently running process. 

এবং

Cntrl + C simply terminates the running process.

Cntrl + C ব্যবহার করে আপনি প্রক্রিয়াটি আরম্ভ করতে পারবেন না। যেখানে Cntrl + Z ব্যবহার করে আপনি প্রক্রিয়াটি আবার শুরু করতে পারেন।

প্রক্রিয়াটি আবার শুরু করতে fg% 1 ব্যবহার করুন।


3

CTRL+ Zএকটি কাজ বন্ধ (বিরতি)

CTRL+ Cএকটি কাজ সমাপ্ত

সঙ্গে CTRL+ Cআপনি প্রক্রিয়া পুনরায় শুরু করতে পারেন না, কিন্তু সঙ্গে CTRL+ + Zকাজ শুধু কমান্ড প্রম্পটে লিখে পুনরায় শুরু করা যেতে পারে:

fg% 1

আপনার যদি একাধিক প্রক্রিয়া বিরতি দেয় তবে আপনার করা উচিত

কাজ

আউটপুট দেখতে।


2

পূর্ববর্তী উত্তরগুলি সঠিক, তবে কোনও অজানা কারণে Ctrl-Z সমস্ত শিশু প্রক্রিয়াও স্থগিত করে, তবে কিলাল-সিগস্টপ ... কেবল সামনেরতম (পিতামাতার) প্রক্রিয়াটিকে স্থগিত করে এবং তাদের পছন্দমতো চালানোর জন্য শিশুদের ছেড়ে দেয়।

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