यह मैं उपयोग करता हूं। यह procfs का उपयोग करता है (इसलिए आप सिस्टम जैसे यूनिक्स तक सीमित हैं, मैक पर काम नहीं करेंगे) और पहले उल्लिखित ग्लोब। यह cmdline भी प्राप्त करता है, जो आपको प्रक्रिया की पहचान करने की अनुमति देता है। प्रक्रिया को मारने के लिए आप os.kill(signal.SIGTERM, pid)
का उपयोग कर सकते हैं। उपप्रक्रिया का उपयोग कर के लिए, इस पोस्ट Python, Popen and select - waiting for a process to terminate or a timeout
def list_processes():
"""
This function will return an iterator with the process pid/cmdline tuple
:return: pid, cmdline tuple via iterator
:rtype: iterator
>>> for procs in list_processes():
>>> print procs
('5593', '/usr/lib/mozilla/kmozillahelper')
('6353', 'pickup -l -t fifo -u')
('6640', 'kdeinit4: konsole [kdeinit]')
('6643', '/bin/bash')
('7451', '/usr/bin/python /usr/bin/ipython')
"""
for pid_path in glob.glob('/proc/[0-9]*/'):
# cmdline represents the command whith which the process was started
f = open("%s/cmdline" % pid_path)
pid = pid_path.split("/")[2] # get the PID
# we replace the \x00 to spaces to make a prettier output from kernel
cmdline = f.read().replace("\x00", " ").rstrip()
f.close()
yield (pid, cmdline)
स्रोत
2009-12-24 05:30:35
हाँ मैं कर रहा हूँ आदर्श मैन्युअल ps – hoju
एक खोल के अंदर 'ps' आदेश चल रहा है पार्स करने से उच्चतर स्तर पुस्तकालय बाद एक बहुत अधिक/proc उपयोग के बारे में tylerl के नोट से खतरनाक है। इसके बजाय ऐसा करो। –
यह खतरनाक कैसे हो सकता है? – hoju