লিনাক্সে হ্যালোইন: জম্বি প্রক্রিয়াগুলি কীভাবে হত্যা করা যায়

হ্যালোইন স্ট্যাম্প

মৃতদের দিন আসছে এবং সে কারণেই আমরা LxA থেকে এই ছোট টিউটোরিয়ালটি এর বিষয়ে কথা বলতে চাই জম্বি প্রক্রিয়া এবং কীভাবে আমরা তাদের হত্যা করতে পারি। প্রথমে বলার বিষয়টি হ'ল জম্বি প্রক্রিয়াটি কী, এবং এটি আপনারা জানেন যে লিনাক্স কার্নেলের একটি প্রক্রিয়া পরিচালনা করার জন্য একটি সাবসিস্টেম রয়েছে এবং সিডিইউ প্রসেসিং প্রবাহ প্রেরণ, অগ্রাধিকার পরিবর্তিত, প্রেরণ বা অপসারণের জন্য শিডিয়ুলারের সাথে কাজ করে এবং প্রক্রিয়া হত্যা। ওয়েল, কার্নেলের এই অংশটি, ইউনিক্স-এর মতো বাকী সিস্টেমগুলির মতো, প্রক্রিয়াগুলির বিভিন্ন রাজ্যের মধ্যে পার্থক্য করে ...

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

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

ps -el | grep 'Z'

ps aux | grep defunct

এবং একবার সনাক্ত, আমরা করতে পারেন তাকে হত্যা করো সরাসরি সাথে:

kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`

যদিও অন্য বিকল্পটি পিতামাতার প্রক্রিয়াগুলি সন্ধান করা, সেই থেকে একটি বোকচন্দর প্রক্রিয়া হত্যা আপনার অনুদানের মতো আপনার পিতামাতার প্রক্রিয়াগুলি এটি বজায় রাখতে হবে:

ps -eo pid,ppid | grep <PID>

kill -9 <PPID>

আপনাকে প্রতিস্থাপন করতে হবে আপনি যে জম্বি প্রক্রিয়াটি পেয়েছেন তার আইডি দ্বারা এবং এটি হত্যা দিয়ে হত্যা করার জন্য, প্রতিস্থাপনের পিতামাতার প্রক্রিয়ার আইডি ব্যবহার করুন উদাহরণস্বরূপ, স্পষ্টতই।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়ী: AB ইন্টারনেট নেটওয়ার্ক 2008 SL
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   বল তৈরি তিনি বলেন

    ভাল সাইট!
    তারা সবসময় আমাদের সমস্যা থেকে মুক্তি দেয়।

    কোথায় বলেছেন:
    যদিও আরেকটি বিকল্প হল প্যারেন্ট প্রসেসগুলি খুঁজে বের করা, যেহেতু একটি জম্বি প্রসেসকে মেরে ফেলার জন্য আপনাকে প্যারেন্ট প্রসেসগুলিকে মেরে ফেলতে হবে যা এটি সমর্থন করে, যেমন আপনি অনুমান করেছেন:

    1 | ps -eo pid, ppid | grep
    2|
    3 | হত্যা -9

    আপনি যে জম্বি প্রক্রিয়াটি খুঁজে পেয়েছেন তার আইডির জন্য আপনাকে প্রতিস্থাপন করতে হবে এবং এটিকে কিল দিয়ে হত্যা করতে, স্পষ্টতই উদাহরণে প্রতিস্থাপনকারী প্যারেন্ট প্রক্রিয়াটির আইডি ব্যবহার করুন।

    আপনি স্ক্রিপ্ট যোগ করতে পারেন:

    $cat killppid.sh
    #! / বিন / ব্যাশ
    হত্যা -9 $ (ps -eo pid, ppid | awk '$ 1 ==' $ {1} '{print $2}')

    অবশ্যই, এটি এমন একটি কাজ নয় যা একজন সাধারণ ব্যবহারকারী সর্বদা সম্পাদন করে।
    এটি শুধুমাত্র অ্যাডমিনিস্ট্রেটরের জন্য উপযোগী হবে, কিন্তু এটিকে রুট হিসাবে চালানো বিপজ্জনক, কারণ এটি সিস্টেমের যেকোনো প্রক্রিয়াকে মেরে ফেলতে পারে।

    মানুষ হত্যার মধ্যে এটি এই নোট আছে:

    নোটস আপনার শেল (কমান্ড লাইন ইন্টারপ্রেটার) একটি অন্তর্নির্মিত হত্যা কমান্ড থাকতে পারে। আপনি পারেন
    বিরোধ সমাধানের জন্য এখানে / bin / kill হিসাবে বর্ণিত কমান্ডটি চালাতে হবে।

    বাশের সেই আদেশ রয়েছে, এটি ম্যান ব্যাশের অংশ এটি সম্পর্কে:

    হত্যা [-s sigspec | -n signum | -sigspec] [পিড | কাজের ক্ষেত্র]...
    kill -l|-L [sigspec | প্রস্থান_স্থিতি]
    পিড বা জব দ্বারা নামকৃত প্রক্রিয়াগুলিতে sigspec বা signum দ্বারা নামযুক্ত সংকেত পাঠান
    বিশেষ sigspec হয় একটি কেস-সংবেদনশীল সংকেত নাম যেমন SIGKILL (সহ বা
    SIG উপসর্গ ছাড়া) বা একটি সংকেত নম্বর; signum একটি সংকেত সংখ্যা. যদি
    sigspec উপস্থিত নেই, তাহলে SIGTERM ধরে নেওয়া হয়। -l এর একটি যুক্তি তালিকাভুক্ত করে
    সংকেত নাম। কোন যুক্তি সরবরাহ করা হয় যখন -l দেওয়া হয়, নাম
    আর্গুমেন্টের সাথে সম্পর্কিত সংকেত তালিকাভুক্ত করা হয়েছে, এবং রিটার্ন স্ট্যাটাস হল 0।
    -l-এর exit_status আর্গুমেন্ট হল একটি সংখ্যা যা হয় একটি সংকেত নম্বর বা নির্দিষ্ট করে
    একটি সংকেত দ্বারা সমাপ্ত একটি প্রক্রিয়ার প্রস্থান অবস্থা. -L বিকল্পটি সমতুল্য
    -l. অন্তত একটি সংকেত সফলভাবে প্রেরণ করা হলে, বা
    একটি ত্রুটি ঘটলে বা একটি অবৈধ বিকল্প সম্মুখীন হলে মিথ্যা.

    শুরুতে তারা ব্যাখ্যা করে যে কিভাবে ব্যাশ প্রক্রিয়াগুলিকে রক্ষা করে, কিছু সমস্যা এড়াতে, কিন্তু আমি কীভাবে রুট হিসাবে চালানোর জন্য একটি নিরাপদ স্ক্রিপ্ট তৈরি করতে পারি তা আমার কাছে পরিষ্কার নয়।
    আমি যা ভাবতে পারি তা হল এটিকে এভাবে রক্ষা করা:

    $cat killppid.sh
    #! / বিন / ব্যাশ
    যদি [$ USER == "root"]
    তাহলে ইকো রুট হিসেবে $0 চালাবেন না!!! এটা বিপজ্জনক!
    প্রস্থান
    fi

    হত্যা -9 $ (ps -eo pid, ppid | awk '$ 1 ==' $ {1} '{print $2}')

    $

    ব্যাশের কিল ব্যবহার করুন, না/বিন/কিল

    কি করে দেখবেন আমি বাশের খুব একটা পারদর্শী নই।
    আপনি কি জানেন কিভাবে একটি সুরক্ষিত স্ক্রিপ্ট লিখতে হয় যা শিশু প্রক্রিয়ার ব্যবহারকারী হিসাবে চলে, এমনকি যদি এটি রুট হিসাবে চলে?
    ম্যানুয়ালি এইভাবে যা করা হবে তার সমতুল্য কিছু:

    $su;
    $ kill -9 $ (ps -eo pid, ppid | awk '$ 1 ==' $ {1} '{print $2}')