প্রক্রিয়া এবং উপপ্রসেস উভয়কে কীভাবে হত্যা করবেন?


9

পাইথনের সাবপ্রসেসি মডিউল থেকে বার্তাটির একাধিক লাইন কীভাবে পাবেন তা জানতে আমি একটি প্রশ্ন জিজ্ঞাসা করেছি ।

সমস্যাটি হচ্ছে পরীক্ষার চলাকালীন আমাকে পাইগন প্রক্রিয়াটি মেরে ফেলতে হয়েছিল যা গনুচেস প্রক্রিয়া চালায়। কমান্ড লাইনে ^ সি ব্যবহার করা অজগর প্রক্রিয়াটি মেরে ফেলবে বলে মনে হচ্ছে, তবে জিনুপ্রোসেস নয়।

Gnuchess হত্যা জন্য, আমি সঙ্গে PID পেতে PS-aux-| গ্রেপ gnuchess এবং রান কিল -9 পিআইডি । অজগর এবং গনুছ প্রক্রিয়া উভয়কে মেরে ফেলার জন্য কী অন্যান্য পদ্ধতি রয়েছে?


8
র‌্যান্ডম সিডনোট: আপনি pkillনামটি দিয়ে কোনও প্রক্রিয়াটি মেরে ফেলতে পারেন , তাই আপনার ps aux | grep gnuchessএবং kill -9 PIDস্রেফ হয়ে উঠতে পারেpkill -9 gnuchess
মাইকেল মরোজেক

উত্তর:


10

প্রোগ্রামগুলি সহযোগিতা করে যদি একটি মানক পদ্ধতি আছে। kill -- -42অভিভাবক প্রক্রিয়াটির পিড যেখানে 42 চালান । এটি প্রক্রিয়া গ্রুপের সমস্ত প্রক্রিয়াতে প্রসেস 42 দ্বারা প্রসেস প্রেরণ করে (পিডের আগে বিয়োগ চিহ্নটি প্রক্রিয়া গোষ্ঠী) process

সাধারণত, আপনি যদি শেল প্রম্পট থেকে অজগর স্ক্রিপ্টটি চালান এবং এটি সহজেই কাঁটাচামচ করে gnuchess, দুটি প্রক্রিয়া একই প্রক্রিয়া গ্রুপে থাকা উচিত। তবে এটি ক্ষেত্রে বলে মনে হচ্ছে না, যেহেতু Ctrl+ পুরো অগ্রভাগের প্রক্রিয়া গোষ্ঠীতে Cপ্রেরণ SIGINTকরে।

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


gnuchessপ্রক্রিয়াটির পিড সন্ধানের একটি যুক্তিসঙ্গতভাবে নির্ভরযোগ্য এবং পসিক্স-সম্মতিজনক উপায় হ'ল

gnuchess_pids=$(ps -A -o pid= -o cmd= | awk '$2 ~ /(^|\/)gnuchess$/ {print $1}')

নির্দিষ্ট ইউনিক্স রূপগুলিতে এটি অর্জনের আরও ভাল উপায় থাকতে পারে যেমন pgrep


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