जवाबों:
/proc
फाइल सिस्टम को देखने वाले IMO टेक्स्ट आउटपुट को हैक करने से कम बुरा नहीं है 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 :
PSI एक पायथन पैकेज है जो प्रक्रियाओं और अन्य विविध सिस्टम जानकारी जैसे आर्किटेक्चर, बूटटाइम और फाइल सिस्टम के लिए वास्तविक समय तक पहुंच प्रदान करता है। इसके पास एक पाइथोनिक एपीआई है जो सभी समर्थित प्लेटफॉर्मों के अनुरूप है, लेकिन यह प्लेटफॉर्म-विशिष्ट विवरणों को भी उजागर करता है, जहां वांछनीय है।
उपप्रोसेस मॉड्यूल के माध्यम से बाल प्रक्रियाओं को बनाने और उपयोग करने का स्वीकृत तरीका है।
import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl
आदेश को तर्कों की एक अजगर सूची में तोड़ दिया जाता है ताकि इसे शेल में चलाने की आवश्यकता न हो (डिफ़ॉल्ट रूप से उपप्रोसेस। किसी भी प्रकार के शेल वातावरण का उपयोग नहीं करता है जो इसे बस निष्पादित करता है)। इस वजह से हम केवल पोप को '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])