লিনাক্সে পাইথন ব্যবহার করে আমি কীভাবে চলমান প্রক্রিয়া তালিকা পেতে পারি?
লিনাক্সে পাইথন ব্যবহার করে আমি কীভাবে চলমান প্রক্রিয়া তালিকা পেতে পারি?
উত্তর:
/procফাইল সিস্টেমটির দিকে তাকানো আইএমও এর পাঠ্য আউটপুট হ্যাক করার চেয়ে কম বাজে ps।
import os
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
for pid in pids:
try:
print open(os.path.join('/proc', pid, 'cmdline'), 'rb').read().split('\0')
except IOError: # proc has already terminated
continue
psutil- এটি একটি দুর্দান্ত পাইথোনিক ইন্টারফেসের মাধ্যমে এগুলি করে এবং আপনি যদি কখনও লিনাক্স-নন সার্ভারে চালনা করতে চান তবে এটি পোর্টেবল।
আপনি একটি প্ল্যাটফর্ম স্বাধীন সমাধান হিসাবে psutil ব্যবহার করতে পারেন !
import psutil
psutil.pids()
[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224,
268, 1215, 1216, 1220, 1221, 1243, 1244, 1301, 1601, 2237, 2355,
2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245,
4263, 4282, 4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358,
4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446, 5167, 5234, 5235,
5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
আপনি তৃতীয় পক্ষের লাইব্রেরি যেমন PSI ব্যবহার করতে পারেন :
পিএসআই একটি পাইথন প্যাকেজ যা প্রক্রিয়া এবং অন্যান্য বিবিধ পদ্ধতিতে যেমন আর্কিটেকচার, বুটটাইম এবং ফাইল সিস্টেমগুলিতে রিয়েল-টাইম অ্যাক্সেস সরবরাহ করে। এটিতে একটি পাইথোনিক এপিআই রয়েছে যা সমস্ত সমর্থিত প্ল্যাটফর্মগুলির সাথে সামঞ্জস্যপূর্ণ তবে প্ল্যাটফর্ম-নির্দিষ্ট বিশদগুলিও প্রকাশিত করে যেখানে পছন্দসই।
শিশু প্রক্রিয়াগুলি তৈরি এবং ব্যবহারের অনুমোদিত উপায় হ'ল সাবপ্রসেস মডিউলটি।
import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl
কমান্ডটি আর্গুমেন্টগুলির একটি অজগর তালিকায় বিভক্ত হয়ে গেছে যাতে এটি শেলের মধ্যে চালানোর প্রয়োজন হয় না (ডিফল্টরূপে সাবপ্রসেসি P পোপেন কোনও ধরণের শেল পরিবেশ ব্যবহার করে না এটি কেবল এটি চালায়)। এর কারণে আমরা পোপেনকে কেবল 'PS -U 0' সরবরাহ করতে পারি না।
আমি উপযুক্ত বিকল্পগুলি দিয়ে কমান্ডটি কার্যকর করতে সাবপ্রসেস মডিউলটি ব্যবহার করব ps। বিকল্পগুলি যুক্ত করে আপনি কোন প্রক্রিয়াগুলি দেখছেন তা সংশোধন করতে পারবেন। এসওতে সাব-প্রসেসির উপর প্রচুর উদাহরণ। এই প্রশ্নের উত্তর দেয় কীভাবে আউটপুট পার্স করা যায়ps উদাহরণস্বরূপ :)
উদাহরণস্বরূপ উত্তরগুলির মধ্যে একটি হিসাবে সিস্টেমের তথ্য অ্যাক্সেস করতে PSI মডিউলটিও ব্যবহার করতে পারেন (যেমন এই উদাহরণের প্রক্রিয়া সারণী )।
import os
lst = os.popen('sudo netstat -tulpn').read()
lst = lst.split('\n')
for i in range(2,len(lst)):
print(lst[i])