0 কে হত্যা আসলে কি করে?


10

ইন man page, এটি বলে:

          0      All processes in the current process group are signaled

এবং আমি এটির মতো চেষ্টা করেছি:

$ man kill &
[1] 15247
$
[1]+  Stopped                 man kill
$ kill 0
$ ps
15247 pts/41   00:00:00 man

আমি যেমন বুঝতে পেরেছি, kill 0বর্তমান প্রক্রিয়াতে সমস্ত প্রক্রিয়া মেরে ফেলবে, যার মধ্যে রয়েছে pid15247। যাইহোক, এটি এই উদাহরণে কিছুই করেনি। কীভাবে এটি ব্যবহার করবেন সে সম্পর্কে কারও ধারণা আছে?


আপনি কোন শেল ব্যবহার করছেন?
ফ্যাটালআরার

@ ফ্যাটাল এরর আমি বাশ ব্যবহার করছি
ফায়ারগান

উত্তর:


4

kill 0আমার কিল ম্যান পৃষ্ঠাতে (ডেবিয়ান) কীভাবে আচরণ করে তা আমি একটি নোট পাইনি ।

তবে আমার দুটি মন্তব্য আছে:

(1) "প্রসেস গ্রুপ" আপনার প্রত্যাশা মতো নাও হতে পারে। আপনি প্রসেস গ্রুপ আইডি (পিজিআইডি) এর সাথে প্রদর্শন করতে পারেন ps -o "%p %P %r %c %a":

$ ps -o "%p %P %r %c %a"
  PID  PPID  PGID COMMAND         COMMAND
12124 12123 12124 zsh             -zsh
12212 12124 12212 man             man kill
12226 12212 12212 less            less
12302 12124 12302 ps              ps -o %p %P %r %c %a

সুতরাং, manপ্রদর্শন পেজার সরঞ্জাম ( less) এর সাথে একসাথে একই প্রক্রিয়া গ্রুপে রয়েছে, তবে এটি শেলের (আমার ক্ষেত্রে zsh) এর চেয়ে আলাদা।

(২) সম্ভবত দুটি পৃথক killকমান্ড রয়েছে। এর মধ্যে একটি তৈরি করা হয়েছে bash(দেখুন ব্যাশ (1), বিভাগ "শেল বিল্টিন কম্যান্ডস") এবং বাহ্যিক /bin/kill। এই দুজন আলাদা আচরণ করতে পারে! আপনি স্পষ্ট করে বলতে পারেন আপনি কোনটি টাইপ করে builtin killবা এর command killপরিবর্তে চালাতে চান kill। বহিরাগত কমান্ড আপনার কাছে পথ নির্দিষ্ট করে চালাতে পারেন: /bin/kill


1
PPIDহ'ল প্যারেন্ট প্রসেস আইডি, যা প্রায়শই হয় তবে প্রয়োজনীয়ভাবে নয়, প্রক্রিয়া গ্রুপ আইডি। সঠিক কলামটি হ'ল PGID, যা ডিফল্ট psআউটপুটে উপস্থিত হয় না ; -oএটিতে অন্তর্ভুক্ত একটি কাস্টম ফর্ম্যাট তৈরি করতে আপনাকে বিকল্পটি ব্যবহার করতে হবে।
চিপনার

@ চেপনার: আপনি একদম ঠিক বলেছেন, ধন্যবাদ! আমি আমার সাইগউইনের পিএস (1) ম্যান পেজ দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম, যা বলে: "-l, --long: show process process uids, ppids, pgids, winpids"। আমার লজ্জা, আমি সেই অনুযায়ী আমার উত্তর সম্পাদনা করেছি। যাইহোক, আমার বক্তব্য (কেবলমাত্র পুরুষ + পেজারের একই পিজিআইডি রয়েছে) এখন হিসাবে ঠিক হয়েছে intended (এমনকি সেই বাক্যটি ভুল হওয়ার আগে :-()
এমপি

1

আপনার সমস্ত প্রক্রিয়া বন্ধ করতে এবং নিজেকে লগ অফ করতে, প্রবেশ করুন:

kill -kill 0

এটি প্রেরকদের প্রসেস গ্রুপ আইডির সমান একটি প্রসেস গ্রুপ আইডি থাকা সমস্ত প্রক্রিয়াতে সিগন্যাল 9, সিগ্কিল সিগন্যাল প্রেরণ করে। শেল সিগ্কিল সিগন্যালটিকে উপেক্ষা করতে পারে না বলে এটি লগইন শেলটি বন্ধ করে দেয় এবং আপনাকে লগ করে দেয়

এটি আইবিএমের এআইএক্স ম্যানুয়াল, তবে সম্ভবত ধারণাটি প্রযোজ্য।

এই কার্যকারিতা লিনাক্স "কিল" তে বিদ্যমান নেই (যেমনটি আমি দেখতে পাচ্ছি); তবে এটি "হত্যার" সাথে আচরণ করে:

0 কে হত্যা করা পিডকে মেরে ফেলছে না 0 পরিবর্তে বর্তমান গ্রুপে সমস্ত প্রক্রিয়া মেরে ফেলার জন্য এটি হ'ল একটি বিকল্প । আপনার কমান্ডের সাহায্যে আপনি শেলটির প্রসেস গ্রুপ আইডিতে (জিআইডি) সমস্ত কিছু হত্যা করছেন যা কমান্ড আদেশটি জারি করেছে।

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