লিনাক্সে অবিচ্ছিন্নভাবে একটি পাইথন স্ক্রিপ্ট কীভাবে বন্ধ করা যায়


19

আমার কাছে পাইথন স্ক্রিপ্ট রয়েছে যা চলমান এবং অবিচ্ছিন্নভাবে লগ ফাইলে ত্রুটিগুলি ডাম্প করে।

আমি স্ক্রিপ্টটি সম্পাদনা করতে এবং এটি আবার চালাতে চাই, তবে কীভাবে স্ক্রিপ্টটি থামানো যায় তা জানি না।

আমি বর্তমানে পটিটি-র মাধ্যমে লিনাক্সে লগইন করেছি এবং সেখানে সমস্ত কোডিং করছি। সুতরাং, লিনাক্সে পাইথন স্ক্রিপ্ট বন্ধ করার জন্য কোন আদেশ আছে?

উত্তর:


35

আপনাকে প্রক্রিয়া আইডি (পিড) খুঁজতে হবে। এটি করার জন্য একটি আদেশ হবে

$> ps -ef

পাইথন প্রক্রিয়াগুলিতে ফলাফল সীমাবদ্ধ করতে আপনি ফলাফল গ্রেপ করতে পারেন

$> ps -ef | grep python

যা ফলাফল প্রদান করবে:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

দ্বিতীয় কলামটি হ'ল পিড। তারপরে কিল কমান্ডটি ব্যবহার করুন:

$> kill -9 2430 (i.e. the pid returned)

ঠিক আমি যা খুঁজছিলাম। ধন্যবাদ

8

এই সাধারণ লাইনটি ব্যবহার করে দেখুন, এটি সমস্তটি শেষ করে দেবে script.py:

pkill -9 -f script.py

1
স্ক্রিপ্টটির নামটি স্বতন্ত্র থাকলে পিআইডি অনুসন্ধানের চেয়ে ম্যানুয়ালি অনুসন্ধানের চেয়ে এটি অনেক ভাল।
ফ্লিপিংবাইনারি

7

স্ক্রিপ্টটির প্রসেস আইডি (পিআইডি) সন্ধান করুন এবং প্রক্রিয়াটি kill -9 PIDমেরে ফেলার জন্য একটি ইস্যু করুন যদি না এটি টার্মিনালে আপনার ভুলে যাওয়া প্রক্রিয়া হিসাবে চালিত হয় যার ক্ষেত্রে আপনি এটি মারতে কন্ট্রোল-সি করতে পারেন।

এই আদেশ দিয়ে পিআইডি সন্ধান করুন:

ps -elf | grep python

এটি সমস্ত অজগর প্রক্রিয়া তালিকাভুক্ত করে, ডানটি বেছে নিন এবং এর পিআইডি নোট করুন। তারপর

kill -9 <whatever_the_PID_is>

প্রক্রিয়া মেরে ফেলবে। আপনি এই পর্যায়ে একটি প্রক্রিয়া সমাপ্ত সম্পর্কে একটি বার্তা পেতে পারেন।

বিকল্পভাবে, আপনি topঅজগর প্রক্রিয়াটি সন্ধান করতে কমান্ডটি ব্যবহার করতে পারেন । সহজভাবে প্রবেশ করুন k(খুনের জন্য) এবং topপ্রোগ্রামটি আপনাকে মারার প্রক্রিয়াটির পিআইডি করার জন্য অনুরোধ জানাবে। কখনও কখনও আপনার আগ্রহী সমস্ত প্রক্রিয়াগুলি দেখা শক্ত হয় topযেহেতু তারা স্ক্রিনটি স্ক্রোল করে ফেলতে পারে, আমি মনে করি psপদ্ধতিকে সহজ / আরও ভাল।


4
ঠিক আছে, ব্যবহার করার আগে -9, আমি প্রথমে এটি "নরমভাবে" হত্যা করব। যদি এটি প্রতিক্রিয়া না করে তবে আমি ব্যবহার করব -9
glglgl

"সফট কিলিং" শব্দটির সাথে পরিচিত নয় ..
লেভন

4

প্রোগ্রামটি যদি আপনার শেলের বর্তমান প্রক্রিয়া হয় তবে Ctrl-C টাইপ করলে পাইথন প্রোগ্রামটি বন্ধ হয়ে যাবে।


দুর্দান্ত সমাধান, এটি পরীক্ষার জন্য প্রয়োজন।
কুযোন

1

নিখুঁত বিশ্বে, আপনি স্ক্রিপ্টের জন্য ডকুমেন্টেশনগুলি পড়তে এবং দেখতে যে কোন সিগন্যাল ব্যবহার করা উচিত এটি শেষ করতে। বাস্তব জীবনে আপনি সম্ভবত এটি টিআরএম সিগন্যাল প্রেরণ করতে চান প্রথমে, কেআইআরএল সিগন্যাল ব্যবহার করে যদি এটি TERM উপেক্ষা করে। সুতরাং, আপনি যা করেন তা হ'ল পিএস কমান্ড (যেমন ইতিমধ্যে বর্ণিত কেউ) ব্যবহার করে প্রসেস আইডিটি সন্ধান করুন। তাহলে, আপনি চালাতে পারেন kill -TERM <pid>। কিছু প্রোগ্রাম এমন কিছু জিনিস পরিষ্কার করে দেবে, যেমনগুলির ফাইলগুলি তাদের কাছে খোলা থাকতে পারে, যখন তারা এ জাতীয় সংকেত পেয়ে থাকে, সুতরাং এরকম কিছু দিয়ে শুরু করা ভাল। যদি এটি ব্যর্থ হয় তবে বড় হাতুড়ি ছাড়া আর কিছুই করার নেই kill -KILL <pid>। (আপনি সংখ্যার মানগুলি ব্যবহার করতে পারেন, যেমন-কিল = -9, এবং সেগুলি সম্ভবত কখনই বদলাবে না, তবে তাত্ত্বিক অর্থে নামগুলি ব্যবহার করা নিরাপদ হতে পারে)


0

আপনি যদি স্ক্রিপ্টের নাম জানেন তবে আপনি সমস্ত কাজকে একটি আদেশে হ্রাস করতে পারবেন:

ps -ef | grep "script_name" | awk '{print $2}' | xargs sudo kill

আপনি যদি তা নিশ্চিত করতে চান তবে এটি একটি অজগর স্ক্রিপ্ট:

ps -ef | grep "python script_name" | awk '{print $2}' | xargs sudo kill

যদি আপনি সমস্ত অজগর স্ক্রিপ্টগুলি হত্যা করতে চান:

ps -ef | grep "python" | awk '{print $2}' | xargs sudo kill

আমি ধারণা করি আপনি ধারণাটি পেয়েছেন;)

অনুস্মারক: উদাহরণগুলির মতো আপনার স্ক্রিপ্টের নাম "" উদ্ধৃত করা দরকার।

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