Frage Prozessliste unter Linux über Python


Wie kann ich eine laufende Prozessliste mit Python unter Linux bekommen?


75
2018-04-24 07:44


Ursprung


Antworten:


IMO Blick auf die /proc Dateisystem ist weniger böse als hacken die Textausgabe von 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()
    except IOError: # proc has already terminated
        continue

101
2018-04-24 15:20



Du könntest benutzen psutil als plattformunabhängige Lösung!

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]

69
2018-06-17 19:25



Sie können eine Drittanbieter-Bibliothek wie z PSI:

PSI ist ein Python-Paket, das Echtzeitzugriff auf Prozesse und andere verschiedene Systeminformationen wie Architektur, Boottime und Dateisysteme bietet. Es verfügt über eine Python-API, die auf allen unterstützten Plattformen konsistent ist, bietet aber auch plattformspezifische Details, wo dies wünschenswert ist.


8
2018-04-24 08:09



Die sanktionierte Methode zum Erstellen und Verwenden untergeordneter Prozesse besteht im Unterprozessmodul.

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

Der Befehl ist in eine Python-Liste von Argumenten zerlegt, so dass er nicht in einer Shell ausgeführt werden muss (standardmäßig verwendet der Subprozess.Popen keine Shellumgebung, sondern führt ihn einfach aus). Aus diesem Grund können wir Popen nicht einfach 'ps -U 0' liefern.


4
2018-04-24 19:00



Ich würde das benutzen Unterprozess Modul zum Ausführen des Befehls ps mit geeigneten Optionen. Durch Hinzufügen von Optionen können Sie ändern, welche Prozesse Sie sehen. Viele Beispiele zum Subprozess auf SO. Diese Frage beantwortet, wie man die Ausgabe von analysiert ps beispielsweise:)

Sie können, als eine der Beispiel Antworten zeigte benutze auch die PSI Modul zum Zugriff auf Systeminformationen (z. B. die Prozesstabelle in Dieses Beispiel).


0
2018-04-24 07:50



import os
lst = os.popen('sudo netstat -tulpn').read()
lst = lst.split('\n')
for i in range(2,len(lst)):
    print(lst[i])

-1
2018-04-27 06:06