[PYTHON] Tuer, y compris les petits processus

Aperçu

Un outil pour tuer, y compris les petits processus. Pour python. (Il est lié au processus python.) La vérification est uniquement pour Linux.

Comment utiliser Si vous l'exécutez tel quel, une liste de processus parents avec de petits processus sera affichée, donc (À titre d'exemple, supposons qu'un programme avec un petit processus de proc_01.py proc_02.py est en cours d'exécution.)

$ python terminate_children_process.py

Liste des processus avec les petits processus liés à Python
Si vous spécifiez PID sur la ligne de commande, terminez en incluant les petits processus.
{'pid': 26727, 'cmdline': ['python', 'proc_01.py']}
{'pid': 26747, 'cmdline': ['python', 'proc_02.py']}

Spécifiez le pid que vous souhaitez terminer et exécutez à nouveau.

$ python terminate_children_process.py 26747

terminer le processus enfant 26849
terminer le processus enfant 26850
terminer le processus enfant 26851
terminer le processus parent 26747

Source (terminate_children_process.py)

#terminate_children_process.py
import sys
import psutil

if len(sys.argv)==1:
    #Afficher le processus avec les petits processus liés à Python
    print("Liste des processus avec les petits processus liés à Python")
    print("Si vous spécifiez PID sur la ligne de commande, terminez en incluant les petits processus.")
        
    PROCNAME = "python"
    for proc in psutil.process_iter([ "pid"  ,  'cmdline'  ]):
        if proc.name()[:len(PROCNAME)] == PROCNAME:
            p = psutil.Process(proc.pid)
            if len(p.children()) >0:
                print(proc.info)
    
else:
    #Terminer avec le PID spécifié et ses petits processus
    
    target_pid=int(sys.argv[1])
    p = psutil.Process(target_pid)
    
    #Fin de l'enfant
    pid_list=[pc.pid for pc in p.children(recursive=True)] 
    for pid in pid_list:
        psutil.Process(pid).terminate ()
        print("terminer le processus enfant{}" .format(pid))
    
    #Parent terminer
    p.terminate ()
    print("terminer le processus parent{}" .format(target_pid))

référence

psutil documentation

Recommended Posts

Tuer, y compris les petits processus
Comment tuer des processus en vrac