72 votes

Comment obtenir l'ID du processus d'un programme sous Unix ou Linux en utilisant Python ?

J'écris quelques scripts de surveillance en Python et j'essaie de trouver le moyen le plus propre d'obtenir l'ID du processus de n'importe quel programme en cours d'exécution aléatoire étant donné le nom de ce programme .

quelque chose comme

ps -ef | grep MyProgram

Je pourrais analyser le résultat de cette opération, mais je me suis dit qu'il y avait peut-être une meilleure solution en Python.

301voto

Derek Swingley Points 3851

22voto

Mark Points 33086

Si vous ne vous limitez pas à la bibliothèque standard, j'aime bien psutil pour ça.

Par exemple, pour trouver tous les processus "python" :

>>> import psutil
>>> [p.info for p in psutil.process_iter(attrs=['pid', 'name']) if 'python' in p.info['name']]
[{'name': 'python3', 'pid': 21947},
 {'name': 'python', 'pid': 23835}]

15voto

lunaryorn Points 13621

Essayez pgrep . Son format de sortie est beaucoup plus simple et donc plus facile à analyser.

8voto

DevPlayer Points 996

Aussi : Python : Comment obtenir le PID par le nom du processus ?

Adaptation aux réponses postées précédemment.

def getpid(process_name):
    import os
    return [item.split()[1] for item in os.popen('tasklist').read().splitlines()[4:] if process_name in item.split()]

getpid('cmd.exe')
['6560', '3244', '9024', '4828']

4voto

eyalev Points 60

Con psutil :

(peut être installé avec [sudo] pip install psutil )

import psutil

# Get current process pid
current_process_pid = psutil.Process().pid
print(current_process_pid)  # e.g 12971

# Get pids by program name
program_name = 'chrome'
process_pids = [process.pid for process in psutil.process_iter() if process.name == program_name]
print(process_pids)  # e.g [1059, 2343, ..., ..., 9645]

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