টার্মিনালে Ctrl-z এবং Ctrl-c এর মধ্যে পার্থক্য কী?


120

কেউ আমাকে ctrl+ zএবং ctrl+ এর মধ্যে পার্থক্য বলতে পারেন c?

আমি যখন টার্মিনালে থাকি, উভয় সংমিশ্রণই বর্তমান প্রক্রিয়াটি বন্ধ করে দেয় তবে উভয়ের মধ্যে ঠিক কী পার্থক্য রয়েছে?


আমি এখানে একটি খুব অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি: unix.stackex
بدل.


হ্যাঁ আমি উভয়ের মধ্যে পার্থক্য বুঝতে সফল হয়েছিলাম !!
চৈতন্য লাক্কুণ্ডি

আমি এখানে একটি জিনিস যুক্ত করতে চাই, যে বেশিরভাগ লোক (আমার পেশাগত বৃত্তেও) তাদের মধ্যে পার্থক্য রাখে না। এবং কমান্ডটি সমাপ্ত করতে CTRL-Z বিকল্প ব্যবহার করেছে option যা ভুল অনুশীলন। এই সমস্ত দৃষ্টান্তে আপনাকে অবশ্যই CTRL-C ব্যবহার করতে হবে। যেমনটি সিটিআরএল-জেড সহজেই পটভূমিতে রাখে। সুতরাং প্রক্রিয়াটি সমাপ্ত হওয়া অবধি শেষ হবে না, যখন তিনি সিটিআরএল-জেড টিপতে সমাপ্ত হয়ে ব্যবহারকারীর (বেশিরভাগ সময়) আকাঙ্ক্ষা নাও করতে পারেন।
কুলদীপ.কম্বুজ

উত্তর:


155

আমরা যদি একদিকে প্রান্তের কেসগুলি ছেড়ে যাই তবে পার্থক্যটি সহজ। Control+ Cঅ্যাপ্লিকেশনটি প্রায় অবিলম্বে বাতিল করে দেয় যখন Control+ Zএটি ব্যাকগ্রাউন্ডে বন্ধ করে দেয়, স্থগিত করা হয়।

শেল এই সমন্বয়গুলির অন্তর্নিহিত অ্যাপ্লিকেশনগুলিতে বিভিন্ন সংকেত প্রেরণ করে:

  • Control+ C(নিয়ন্ত্রণ চরিত্র intr) SIGINT প্রেরণ করে যা অ্যাপ্লিকেশনটিকে বাধাগ্রস্থ করবে। সাধারণত এটিকে বাতিল করতে বাধ্য করা হয়, তবে এটি সিদ্ধান্ত নেওয়ার ক্ষেত্রেই হয়।

  • Control+ Z(নিয়ন্ত্রণ চরিত্র susp) কার্যকরভাবে ব্যাকগ্রাউন্ডে রেখে স্থগিত করে অগ্রভাগের অ্যাপ্লিকেশনে SIGTSTP প্রেরণ করে। আপনার দরকারী কিছু ডেটা ধরতে এবং সম্পাদকের মতো কিছু ভাঙার দরকার পড়লে এটি দরকারী is আপনি দৌড় দিয়ে আবার অ্যাপ্লিকেশনটিতে যেতে পারেন fg(বা যেমন দেখায় কাজের নম্বরটি %xকোথায় )।xjobs

    আমরা এটি চালিয়ে nano TEST, তারপরে Control+ টিপে Zএবং তারপরে চালিয়ে পরীক্ষা করতে পারি ps aux | grep TEST। এটি আমাদের দেখায় যে nanoপ্রক্রিয়াটি এখনও চলছে:

    oli     3278  0.0  0.0  14492  3160 pts/4    T    13:59   0:00 nano TEST
    

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

    কিছু চলমান বাহ্যিক প্রক্রিয়া (ওয়েব অনুরোধের মতো) যদি তারা ঘুমিয়ে থাকার সময়সীমা শেষ করে তবে কিছু অ্যাপ্লিকেশন ক্র্যাশ হবে will


51
এটি যোগ করার মতো যে এটি পূর্বের পৃষ্ঠায় না রেখেই Ctrl + Z'ed করা অ্যাপ্লিকেশনটিকে সাময়িক চাপ দেওয়া bg(পরিবর্তে fg) চালানোও সম্ভব ; অ্যাপ্লিকেশন এবং অ্যাপ্লিকেশন নিজেই শুরু করে এমন দুটি শেলকে কার্যকরভাবে আপনাকে নিয়ন্ত্রণ দেওয়া , যেমন আপনি অ্যাপ্লিকেশন শুরু করার সময় ব্যবহার করেছিলেন । এটি প্রায়শই কার্যকর হয় যখন আপনি এটি দিয়ে শুরু করতে ভুলে গিয়েছিলেন :)&&
মাল্টে স্কোরুপ্পা

6
এবং আপনি fgআবার টাইপ করে সেই প্রক্রিয়া ফিরে পেতে পারেন !

4
বেশ কয়েকটি কাজ স্থগিত বা ব্যাকগ্রাউন্ডে রয়েছে: "কাজগুলি" তাদের তালিকাভুক্ত করে, এবং "fg% n" বা "বিজি% এন" বা এমনকি "%% কিল" কে চাকরি% এন অগ্রভূমি, ব্যাকগ্রাউন্ডে রাখার জন্য, বা হত্যা করতে পারে ।
অলিভিয়ার ডুলাক

3
@ অলি: আপনার দ্বিতীয় অনুচ্ছেদে বলা হয়েছে, "শেল প্রেরণ [গুলি]… অন্তর্নিহিত অ্যাপ্লিকেশনগুলিতে সিগন্যাল…।" না, অপারেটিং সিস্টেম / টার্মিনাল ড্রাইভার সংকেত প্রেরণ করে। (একটি উইন্ডো সিস্টেমে উইন্ডো ম্যানেজার একটি ভূমিকা রাখতে পারে)) এছাড়াও, সম্পূর্ণ হতে (যদিও মূল প্রশ্নের ক্ষেত্রের বাইরে), আপনি Ctrl + mention উল্লেখ করতে চাইতে পারেন \
স্কট

অধিবেশনটি কীভাবে জানতে পারে যে কোন প্রক্রিয়া গোষ্ঠীটি হয় ctrl cবা করার পরে অগ্রভাগে ফিরতে হবে ctrl z? এটি এসআইডি (বাশ) এর ডিফল্ট?
jiggunjer

16

Control+ Zএকটি প্রক্রিয়া স্থগিত করে ( SIGTSTP) এবং Control+ Cএকটি প্রক্রিয়া বাধা দেয় ( SIGINT)

http://en.wikipedia.org/wiki/Control-Z

ইউনিক্স-মতো সিস্টেমে, কন্ট্রোল + জেডটি মূল সিকোয়েন্সের জন্য সবচেয়ে সাধারণ ডিফল্ট কীবোর্ড ম্যাপিং যা কোনও প্রক্রিয়া স্থগিত করে is

http://en.wikipedia.org/wiki/Control-C

পসিক্স সিস্টেমে সিকোয়েন্সটি সক্রিয় প্রোগ্রামকে একটি সিগিন্ট সিগন্যাল গ্রহণ করে causes প্রোগ্রামটি কীভাবে এই শর্তটি পরিচালনা করবেন তা নির্দিষ্ট না করে, এটি সমাপ্ত হবে। সাধারণত একটি প্রোগ্রাম যা একটি সিগিন্ট পরিচালনা করে তা এখনও নিজেকে শেষ করে দেবে, বা অন্তত এর ভিতরে চলমান কার্যটি শেষ করে দেবে


1
রেফারেন্স পোস্টিং ভাল কাজ। তবে সাধারণত বললে, প্রযুক্তিগত উল্লেখের জন্য উইকিপিডিয়া খুব ভাল উত্স নয়।
অ্যারন

3
@ ব্রাইসএটনেটওয়ার্ক 23 যা খুব সত্য; আমি অনুভব করেছি যে উইকিপিডিয়া সংজ্ঞাটি যথেষ্ট পরিমাণে যথেষ্ট ছিল। আমি ভবিষ্যতে আরও প্রযুক্তিগত রেফারেন্স সন্ধান করব!
ঘুম বঞ্চিত বুলবসৌর

13

Ctrl+ + Cসংকেত একটি প্রক্রিয়া হত্যা করতে ব্যবহৃত হয় SIGINT, অন্য কথায় এটি একটি ভদ্র হয় হত্যা

Ctrl+ Z কোনও প্রক্রিয়াটিকে সিগন্যাল প্রেরণ করে স্থগিত করার জন্য ব্যবহৃত হয় SIGTSTPযা ঘুমের সিগন্যালের মতো, এটি পূর্বাবস্থায় ফিরে যেতে পারে এবং প্রক্রিয়াটি আবার শুরু করা যেতে পারে।

তবে যখন কোনও প্রক্রিয়া স্থগিত করা হয়, আমরা আবার fg(অগ্রভাগে পুনরায় শুরু করুন) এবং bg(পটভূমিতে পুনরায় শুরু ) দ্বারা এটি আবার চালু করতে পারি, তবে আমি একটি নিহত প্রক্রিয়া পুনরায় শুরু করতে পারি না, এটি Ctrl+ C& Ctrl+ ব্যবহারের মধ্যে পার্থক্য Z

আমরা স্থগিত প্রক্রিয়াগুলি কীভাবে দেখতে পারি ?

jobsকমান্ড ভালো আউটপুট দেয়:

[1]-  Stopped                 cat
[2]+  Stopped                 vi

ব্যাকগ্রাউন্ডে স্থগিত প্রক্রিয়াটি কীভাবে হত্যা করা যায় ?

killকমান্ডটি ব্যবহার করে :

kill %nকমান্ড nদ্বারা প্রদর্শিত নম্বর যেখানে jobs। সুতরাং যদি আমি বিড়াল বধ করতে চাই: kill %1


1
এই থ্রেডের অন্যান্য মন্তব্যের সাথে মিল রেখে সংশোধন: ctrl-z একটি SIGTSTP সিগন্যাল প্রেরণ করে কোনও SIGSTOP না।
19-10

% 1 আমাকে মেরে বলুন - অপারেশন অনুমোদিত নয়। কেন এমন? ধন্যবাদ
সত্য প্রকাশ

7

এটি সহজভাবে বলতে:

  • CTRL-C অনুরোধ যে প্রোগ্রাম বাতিল

  • CTRL-Z প্রোগ্রাম স্থগিত করতে এবং পটভূমিতে যেতে বাধ্য করে

    কমান্ডের সাহায্যে এটি আপনাকে এটি পুনরায় শুরু করতে দেয় fg। লগইন শেল থেকে বেরিয়ে আসার পরে অবশিষ্ট ব্যাকগ্রাউন্ড টাস্কগুলি মারা যায়।


5

এটি সাহায্য করা উচিত

Ctrl+ Zকোনও প্রক্রিয়াটিকে সিগন্যাল সিগস্টপ প্রেরণ করে স্থগিত করার জন্য ব্যবহৃত হয়, যা প্রোগ্রাম দ্বারা বাধা দেওয়া যায় না। যদিও Ctrl+ + Cসংকেত SIGINT সঙ্গে একটি প্রক্রিয়া খুন ও একটি প্রোগ্রাম বাধা দিতে পারে তাই এটি প্রস্থান করার পূর্বে তার স্ব পরিষ্কার করতে পারেন, অথবা এ সব থেকে প্রস্থান না ব্যবহার করা হয়।


4
এটি পুরোপুরি সঠিক নয়। এটি প্রেরণ করে SIGTSTP, যা প্রোগ্রাম দ্বারা ধরা যেতে পারে। চারটি বিভিন্ন সংকেত, যা একটি প্রোগ্রাম স্থগিত করতে পারেন SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU। এর মধ্যে কেবল SIGSTOPঅবরুদ্ধ করা যায় না। অন্য তিনটি বিভিন্ন শর্তে প্রক্রিয়া বন্ধ করতে টার্মিনাল দ্বারা ব্যবহৃত হয়।
ক্যাস্পারড

4

আপনি যখন ctrl+ cটিপেন, তার অর্থ আপনি আপনার প্রক্রিয়াতে সাইন ইন প্রেরণ করেন। মনে হচ্ছে যে এই কমান্ড টাইপ করুন: kill -SIGINT <your_pid>। এটি আপনাকে আপনার প্রক্রিয়াটি মেরে ফেলবে। যে কারণে পিএস কমান্ড ইস্যু করার সময় আপনি এটি দেখতে পাচ্ছেন না ।
আপনি যখন ctrl+ zটিপেন, তার অর্থ আপনি নিজের প্রক্রিয়াতে সাইনস্টপ প্রেরণ করেন। মনে হচ্ছে যে এই কমান্ড টাইপ করুন: kill -SIGKSTOP <your_pid>। এটি আপনার প্রক্রিয়াটি থামিয়ে দেবে, তবে প্রক্রিয়াটি এখনও বেঁচে থাকবে। সুতরাং আপনি আপনার প্রক্রিয়াতে সাইনকন্ট প্রেরণ করে আপনার প্রক্রিয়াটি পুনরায় সক্রিয় করতে পারেন।

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