Comment obtenir une liste de processus en cours d’exécution à l’aide de Python sous Linux?)?
OMI regardant le /proc
système de fichiers est moins méchant que le piratage de la sortie texte de 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
Vous pouvez utiliser psutil comme solution indépendante de la plate-forme!
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]
Vous pouvez utiliser une bibliothèque tierce, telle que PSI :
PSI est un package Python) fournissant un accès en temps réel à des processus et à d’autres informations système telles que l’architecture, le temps mort et les systèmes de fichiers. - des détails spécifiques, le cas échéant.
La manière autorisée de créer et d'utiliser des processus enfants consiste à utiliser le module de sous-processus.
import subprocess
pl = subprocess.Popen(['ps', '-U', '0'], stdout=subprocess.PIPE).communicate()[0]
print pl
La commande est décomposée en une liste d’arguments python), de sorte qu’il n’est pas nécessaire de l’exécuter dans un shell (par défaut, le sous-processus.Popen n’utilise aucun type d’environnement Pour cette raison, nous ne pouvons pas simplement fournir "ps -U 0" à Popen.
J'utiliserais le module sous-processus pour exécuter la commande ps
avec les options appropriées. En ajoutant des options, vous pouvez modifier les processus que vous voyez. Beaucoup d'exemples sur le sous-processus sur SO. Cette question explique comment analyser la sortie de ps
par exemple :)
Vous pouvez, comme l’un des exemples de réponses présentés utiliser également le module PSI pour accéder aux informations système (telles que la table de processus dans cet exemple ).