কিল্লাল সব মেরে না এবং খুব কমই খুন করে, ততক্ষণে হুকুম কী?


12

আমি মাঝে মধ্যে killallকমান্ডগুলি প্রক্রিয়াগুলি হস্তে ব্যবহার করি । আমি কেন একাগ্রভাবে বলার কারণ হ'ল কিছু ক্ষেত্রে এটি আমার পক্ষে কাজ করে নি।

সাম্প্রতিক উদাহরণ থান্ডারবার্ডের সাথে ছিল যেখানে মেমোরিতে প্রায় 5 টি দৃষ্টান্ত ছিল তাই আমি killallআদেশটি ব্যবহার করার সিদ্ধান্ত নিয়েছি । এটি 2 টি প্রক্রিয়া মেরে ফেলেছিল এবং 3 টি এখনও স্মৃতিতে রেখে গেছে। আবার চেষ্টা করলাম এবং 3 জন এখনও সেখানে ছিল।

সুতরাং আমি kill -9কমান্ডটি ম্যানুয়ালি তাদের পিডের মাধ্যমে পৃথক প্রক্রিয়াগুলির প্রত্যেককে হত্যা করার জন্য ব্যবহার করেছি। কাজ করেছে।

আমি বেশিরভাগ kill -9কমান্ডটি যেমন ব্যবহার করি তেমন ব্যবহার করি । killallকমান্ড আমাকে অনেক বার আমি এটা ব্যবহার করে বিরক্ত করবেন না নামিয়ে দিল হয়েছে। তবে এটি কার্যকর না হওয়ার কারণ থাকতে হবে। আমি কি এটি ভুল ব্যবহার করছি?

আমি জানি যে এর মতো আরও কমান্ড রয়েছে pkillতবে killallকমান্ডটি প্রত্যাশার সাথে কেন কাজ করে না তা বুঝতে পেরে আমি কৃতজ্ঞ হব । এমনকি আমি একটি মাত্র প্রক্রিয়া হত্যার চেষ্টা করেছি এবং এটি হিট অ্যান্ড মিস ব্যাপার। কিন্তু kill -9কমান্ড প্রত্যেক সময় কাজ করে।

কোন ধারনা?

পিএস: sudoকোনও পার্থক্য নেই

উত্তর:


22

কিল্লার জন্য ম্যান পৃষ্ঠা থেকে

killall নির্দিষ্ট কমান্ডগুলির মধ্যে যে কোনও চলমান সমস্ত প্রক্রিয়াতে সংকেত প্রেরণ করে। যদি কোনও সিগন্যালের নাম নির্দিষ্ট না করা থাকে তবে SIGTERM প্রেরণ করা হয়।

আপনি যখন এটি করেন kill -9, আপনি সিগ্কিল সিগন্যাল প্রেরণ করছেন। আপনি যদি কিল্লার সাথে একটি সাইন কিল পাঠাতে চান, আপনার প্রয়োজন

killall -s SIGKILL <PROCESSNAME>

সিগ্কিল এবং সিগমেন্টের মধ্যে পার্থক্যের একটি ভাল ব্যাখ্যা (এবং কেন আপনাকে প্রথমে সাইনটার চেষ্টা করা উচিত)

Http://rackerhacker.com/2010/03/18/sigterm-vs-sigkill/ থেকে

ইউনিক্স সিস্টেমে কিল ব্যবহার করে প্রক্রিয়াগুলিতে সিগন্যাল প্রেরণ করা বেশিরভাগ সিস্টেম প্রশাসকের কাছে নতুন বিষয় নয়, তবে আমাকে হত্যা এবং হত্যা -9 এর মধ্যে পার্থক্য সম্পর্কে অনেকবার জিজ্ঞাসা করা হয়েছে।

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

এই মত একটি আদেশ বিবেচনা করুন:

kill 2563

এটি প্রক্রিয়াতে SIGTERM নামে একটি সংকেত প্রেরণ করবে। প্রক্রিয়াটি বিজ্ঞপ্তিটি পাওয়ার পরে, কয়েকটি আলাদা জিনিস ঘটতে পারে:

  • প্রক্রিয়া অবিলম্বে বন্ধ হতে পারে
  • প্রক্রিয়া সংস্থানগুলি সাফ করার পরে অল্প বিলম্বের পরে থামতে পারে
  • প্রক্রিয়াটি অনির্দিষ্টকালের জন্য চলতে পারে

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

যখন কোনও অ্যাপ্লিকেশন কোনও সাইনটারমে সাড়া না দেয় তখন বেশিরভাগ সিস্টেম প্রশাসকরা সাধারণত আরও আকস্মিক সংকেত অবলম্বন করবেন:

kill -9 2563

-9 কিল কমান্ডকে বলে যে আপনি # 9 সিগন্যাল প্রেরণ করতে চান, যাকে সিগ্কিল বলা হয়। এর মতো একটি নাম সহ, এটি সুস্পষ্ট যে এই সংকেতটি আরও কিছুটা ওজন বহন করে।

যদিও SIGKILL একই সংকেত শিরোনাম ফাইলে SIGTERM হিসাবে সংজ্ঞায়িত করা হয়েছে, এটি প্রক্রিয়া দ্বারা এড়ানো যাবে না। প্রকৃতপক্ষে, প্রক্রিয়াটি এমনকি সিগন্যাল সিগন্যাল কার্নেল ইনিমে চলে যাওয়ার পরে সিগ্কিল সিগন্যাল সম্পর্কে সচেতন হয় না। এই মুহুর্তে, init প্রক্রিয়াটি বন্ধ করবে। প্রক্রিয়াটি কখনই সিগন্যাল ধরার এবং এটিতে অভিনয়ের সুযোগ পায় না।

তবে, কার্নেল কিছু পরিস্থিতিতে সফলভাবে প্রক্রিয়াটি মারতে সক্ষম না হতে পারে। প্রক্রিয়াটি যদি নেটওয়ার্ক বা ডিস্ক I / O এর জন্য অপেক্ষা করে থাকে তবে কার্নেল এটি থামাতে সক্ষম হবে না। নিরবচ্ছিন্ন ঘুমের মধ্যে ধরা পড়ে জুম্বো প্রক্রিয়া এবং প্রক্রিয়াগুলি কার্নেল দ্বারা বন্ধ করা যায় না। সিস্টেম থেকে এই প্রক্রিয়াগুলি সাফ করার জন্য একটি রিবুট প্রয়োজন।

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


কেন এটি কেবল কয়েকটি বজ্রপাতের ঘটনাটিকে হত্যা করেছিল তা নিয়ে কোনও জল্পনা?
মীর বার্গ

@ ডুগফার আমার সম্পাদিত লিখনআপটি দেখুন (বা পৃষ্ঠাটি আমি সংযুক্ত করেছি)
tgm4883

ধন্যবাদ, এছাড়াও আমার থান্ডারবার্ড কেন দুর্নীতিগ্রস্থ হয়েছে, মেরুন -9 খুব কঠোর ছিল তাও ব্যাখ্যা করেছে
মেরার বর্গ

এখনও সবসময় কাজ করে না।
ক্রেগ হিক্স

4

killallহিসাবে একই সিনট্যাক্স বেশিরভাগ গ্রহণ করে kill। বিশেষত, এর killallসমতুল্য করার জন্য অভিনব কিছু লেখার দরকার নেই kill -9। এটি ঠিক কাজ করে:

killall -9 thunderbird

(অবশ্যই আলোচিত হিসাবে, আপনার সাধারণত ব্যবহার করতে অনিচ্ছুক killall -9বা সমতুল্য হওয়া উচিত killall -KILL, যদি না অন্য ব্যবস্থাগুলি ইতিমধ্যে সাফল্য ব্যতিরেকে চেষ্টা করা না থাকে।)


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