96 votes

Liste de processus sous Linux via Python

Comment obtenir une liste de processus en cours d'exécution à l'aide de Python sous Linux?

131voto

bobince Points 270740

L'OMI qui regarde le système de fichiers /proc est moins méchant que de pirater 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()
    except IOError: # proc has already terminated
        continue
 

90voto

Davidos Krausos Points 449

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]
 

8voto

Matt Points 426

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 afin qu'il ne soit pas nécessaire de l'exécuter dans un shell (par défaut, le sous-processus.Popen n'utilise aucun type d'environnement shell, il l'exécute simplement). Pour cette raison, nous ne pouvons pas simplement fournir «ps -U 0» à Popen.

7voto

ars Points 35803

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 délai d’attente et les systèmes de fichiers. Il possède une API pythonique qui est cohérente sur toutes les plates-formes prises en charge, mais expose également les détails spécifiques à la plate-forme, le cas échéant.

0voto

extraneon Points 13362

Je voudrais utiliser le sous-processus module 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 les sous-processus sur. Cette question des réponses comment analyser la sortie de l' ps par exemple:)

Vous pouvez, en tant que l'un des exemple les réponses ont montré également utiliser le PSI module de système d'accès à l'information (tels que les processus de table dans cet exemple).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X