[PYTHON] Töte einschließlich kleiner Prozesse

Überblick

Ein Werkzeug zum Töten, einschließlich kleiner Prozesse. Für Python. (Es ist im Python-Prozess gebunden.) Die Überprüfung ist nur für Linux.

Wie benutzt man Wenn Sie es so ausführen, wie es ist, wird eine Liste der übergeordneten Prozesse mit kleinen Prozessen angezeigt (Nehmen Sie als Beispiel an, dass ein Programm mit einem kleinen Prozess von proc_01.py proc_02.py ausgeführt wird.)

$ python terminate_children_process.py

Prozessliste mit kleinen Python-bezogenen Prozessen
Wenn Sie in der Befehlszeile die PID angeben, beenden Sie den Vorgang mit kleinen Prozessen.
{'pid': 26727, 'cmdline': ['python', 'proc_01.py']}
{'pid': 26747, 'cmdline': ['python', 'proc_02.py']}

Geben Sie die PID an, die Sie beenden und erneut ausführen möchten.

$ python terminate_children_process.py 26747

untergeordneten Prozess beenden 26849
untergeordneten Prozess beenden 26850
untergeordneten Prozess beenden 26851
Beenden Sie den übergeordneten Prozess 26747

Quelle (terminate_children_process.py)

#terminate_children_process.py
import sys
import psutil

if len(sys.argv)==1:
    #Prozess mit pythonbezogenen kleinen Prozessen anzeigen
    print("Prozessliste mit kleinen Python-bezogenen Prozessen")
    print("Wenn Sie in der Befehlszeile die PID angeben, beenden Sie den Vorgang mit kleinen Prozessen.")
        
    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:
    #Beenden Sie einschließlich der angegebenen PID und ihrer kleinen Prozesse
    
    target_pid=int(sys.argv[1])
    p = psutil.Process(target_pid)
    
    #Kind kündigen
    pid_list=[pc.pid for pc in p.children(recursive=True)] 
    for pid in pid_list:
        psutil.Process(pid).terminate ()
        print("Untergeordneten Prozess beenden{}" .format(pid))
    
    #Eltern beenden
    p.terminate ()
    print("Beenden Sie den übergeordneten Prozess{}" .format(target_pid))

Referenz

psutil documentation

Recommended Posts

Töte einschließlich kleiner Prozesse
Wie man Prozesse in großen Mengen abbricht