पायथन के माध्यम से लिनक्स पर प्रक्रिया सूची


जवाबों:


128

/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

10
जब आप cmdline को पढ़ते हैं, तब आपको os.listdir ('/ proc') पढ़ने से लौटाए गए पीड के रूप में ब्लॉक / छोड़कर ब्लॉक को पढ़ना होगा।
यानामोन

4
अंत में! मान्यता! अब मैं रुक सकता हूँ! :-)
बोबिन्स

5
-1 के लिए / खरीद के बाद से पोर्टेबल नहीं है और बेहतर इंटरफेस उपलब्ध हैं
गुड पर्सन

2
वॉच आउट: कमांड लाइन 0x00 द्वारा समाप्त की जाती है। व्हाट्सएप को भी उसी चरित्र से बदल दिया जाता है।
फेडरिको

2
बस का उपयोग करें psutil- यह सब एक अच्छा पायथन इंटरफ़ेस के माध्यम से करता है और पोर्टेबल है यदि आप कभी भी गैर-लिनक्स सर्वर पर चलना चाहते हैं।
रिचवेल

83

आप एक मंच स्वतंत्र समाधान के रूप में 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]

2
बस प्रलेखन पर एक नज़र रखना ।
9

इस बात की जानकारी देने के लिए धन्यवाद! नीट पैकेज।
कोडकोला

5
: - यह पूरी तरह से मंच स्वतंत्र नहीं है OSX पर आप accessdenied त्रुटियों में चला सकते हैं groups.google.com/forum/?fromgroups=#!topic/psutil/bsjpawhiWms
आमोस

@amos थोड़े समझ में आता है - आप प्रक्रियाओं के बारे में जानकारी हासिल करने से पहले पहले विशेषाधिकार प्राप्त करना चाहते हैं। संकेत के लिए धन्यवाद।
जेस्मिथ

OSX बिंदु को बढ़ाने के लिए - आपको Linux के विपरीत, प्रक्रिया की जानकारी प्राप्त करने के लिए OSX पर रूट विशेषाधिकारों की आवश्यकता है।
रिचवेल

8

आप थर्ड पार्टी लाइब्रेरी का उपयोग कर सकते हैं, जैसे PSI :

PSI एक पायथन पैकेज है जो प्रक्रियाओं और अन्य विविध सिस्टम जानकारी जैसे आर्किटेक्चर, बूटटाइम और फाइल सिस्टम के लिए वास्तविक समय तक पहुंच प्रदान करता है। इसके पास एक पाइथोनिक एपीआई है जो सभी समर्थित प्लेटफॉर्मों के अनुरूप है, लेकिन यह प्लेटफॉर्म-विशिष्ट विवरणों को भी उजागर करता है, जहां वांछनीय है।


2
PSI को आखिरी बार 2009 में अपडेट किया गया था, जबकि psutil को इस महीने (नवंबर 2015) अपडेट किया गया था - ऐसा लगता है कि psutil एक बेहतर शर्त है।
रिचवेल

7

उपप्रोसेस मॉड्यूल के माध्यम से बाल प्रक्रियाओं को बनाने और उपयोग करने का स्वीकृत तरीका है।

import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl

आदेश को तर्कों की एक अजगर सूची में तोड़ दिया जाता है ताकि इसे शेल में चलाने की आवश्यकता न हो (डिफ़ॉल्ट रूप से उपप्रोसेस। किसी भी प्रकार के शेल वातावरण का उपयोग नहीं करता है जो इसे बस निष्पादित करता है)। इस वजह से हम केवल पोप को 'ps -U 0' की आपूर्ति नहीं कर सकते।


0

मैं उचित विकल्पों के साथ कमांड को निष्पादित करने के लिए सबप्रोसेस मॉड्यूल का उपयोग करूंगा ps। विकल्प जोड़कर आप संशोधित कर सकते हैं कि आप कौन सी प्रक्रियाएँ देख रहे हैं। एसओ पर उपप्रकार के बहुत सारे उदाहरण। यह सवाल जवाब देता है कि कैसे आउटपुट को पार्स किया जाएps उदाहरण लिए :)

आप कर सकते हैं, जैसा कि एक उदाहरण के जवाब से पता चला है कि सिस्टम जानकारी (जैसे कि इस उदाहरण में प्रक्रिया तालिका ) तक पहुंचने के लिए PSI मॉड्यूल का उपयोग करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.