Un Proceso es un programa que se está ejecutando (procesando). Es posible que un proceso no tenga que ser ejecutado explícitamente por el usuario, podría ser un proceso del sistema generado por el sistema operativo. Cualquier aplicación que se ejecute en un sistema operativo primero crea un proceso propio para poder ejecutarse. En una instalación típica del sistema operativo, la mayoría de los procesos son servicios del sistema operativo y aplicaciones en segundo plano, que se ejecutan para mantener el sistema operativo, el software y el hardware.
En este artículo, veremos diferentes formas de obtener la lista de procesos en ejecución de un sistema operativo Windows, a través de Python. En primer lugar, describiríamos un método de python para lograr el resultado y luego buscaríamos un comando que se encuentra en el Procesador de comandos de Windows para el mismo.
Método 1:
Estaríamos usando la biblioteca wmi para obtener la lista de procesos en ejecución en el sistema operativo Windows. Para instalar el módulo, ejecute el siguiente comando en el intérprete de comandos de su sistema operativo:-
pip install wmi
Código:
Python3
import wmi # Initializing the wmi constructor f = wmi.WMI() # Printing the header for the later columns print("pid Process name") # Iterating through all the running processes for process in f.Win32_Process(): # Displaying the P_ID and P_Name of the process print(f"{process.ProcessId:<10} {process.Name}")
Producción:
3196 RuntimeBroker.exe 3524 ShellExperienceHost.exe 3548 SearchIndexer.exe 3796 SearchUI.exe 4136 IDMan.exe 4368 IEMonitor.exe 4488 notepad.exe 2616 SettingSyncHost.exe 4212 dasHost.exe 4664 AdaptiveSleepService.exe 4716 svchost.exe 5412 chrome.exe 1376 chrome.exe 1280 cmd.exe 4928 conhost.exe 5596 py.exe 5060 python.exe 1508 WmiPrvSE.exe
Explicación:
En primer lugar, inicializamos la función WMI() de la biblioteca wmi. Esto nos permite utilizar las funciones que se encuentran en su interior, como WMI.Win32_Service, WMI.Win32_Process, WMI.Win32_Printjob, que están diseñadas para realizar diferentes tareas. Estaríamos usando la función WMI.Win32_Process para obtener la lista de procesos en ejecución en el sistema. Luego llamamos a la función WMI.Win32_Process() para obtener los procesos en ejecución, iterados a través de cada proceso y almacenados en proceso variable. Luego obtuvimos el ProcessID (pid) y ProcessName (nombre) del proceso usando los atributos asociados. Usamos cuerdas F para la salida con el fin de agregar relleno a la salida para alinearla correctamente.
Método 2:
En este método, estaríamos usando un comando que se encuentra dentro del Procesador de comandos de Windows (cmd.exe) con el nombre WMIC ( Línea de comando de instrumentación de administración de Windows ) para obtener el resultado deseado. WMIC es una utilidad de línea de comandos que permite a los usuarios realizar operaciones de Instrumental de administración de Windows (WMI) con un símbolo del sistema. Con el propósito de obtener procesos en ejecución , estaríamos ejecutando el comando:
wmic process get description, processid
Código:
Python3
import os # Running the aforementioned command and saving its output output = os.popen('wmic process get description, processid').read() # Displaying the output print(output)
Producción:
Description ProcessId System Idle Process 0 System 4 smss.exe 340 csrss.exe 460 wininit.exe 604 csrss.exe 624 winlogon.exe 692 services.exe 736 lsass.exe 756 svchost.exe 844 svchost.exe 904 dwm.exe 1012 svchost.exe 80 svchost.exe 420 atiesrxx.exe 1076 svchost.exe 1992 svchost.exe 2032 MsMpEng.exe 2052 NisSrv.exe 2852 sihost.exe 3032 taskhostw.exe 2148 GoogleCrashHandler.exe 2712 GoogleCrashHandler64.exe 2704 explorer.exe 2892 RuntimeBroker.exe 3196 ShellExperienceHost.exe 3524 SearchIndexer.exe 3548 chrome.exe 1340 chrome.exe 2216
Nota: No es obligatorio usar la biblioteca os para este propósito. El usuario puede elegir cualquier otra alternativa (Subproceso, shutil, etc.) que permita la ejecución de comandos de línea de comandos.
Explicación:
Usamos la función popen() que se encuentra dentro del módulo os, para ejecutar el comando en el procesador de comandos. Luego, pasamos la salida del comando anterior a read() para obtener datos en forma legible del objeto os._wrap_close. Al final, mostramos la salida.
Método 3:
Usaremos el módulo de subproceso para interactuar con cmd y recuperar información en su ide de python. podemos leer el comando cmd a través del módulo de subproceso.
Veamos esta lógica, si ejecutamos este breve código de la lista de procesos wmic en nuestra terminal, obtenemos algo así:
Acercarse:
- módulo de importación
- Obtenga el resultado del comando «resumen de la lista de procesos de wmic» usando subprocess.check_output()
- Ahora obtenga Dividir la string y organice sus datos según sus propias necesidades.
Código:
Python3
# import module import subprocess # traverse the software list Data = subprocess.check_output(['wmic', 'process', 'list', 'brief']) a = str(Data) # try block # arrange the string try: for i in range(len(a)): print(a.split("\\r\\r\\n")[i]) except IndexError as e: print("All Done")
Producción:
b'HandleCount Name Priority ProcessId ThreadCount WorkingSetSize 0 System Idle Process 0 0 8 8192 5649 System 8 4 222 1835008 0 Registry 8 120 4 33910784 89 smss.exe 11 516 2 532480 815 csrss.exe 13 652 13 2019328 217 wininit.exe 13 740 1 3239936 781 services.exe 9 812 8 8294400 1843 lsass.exe 9 832 7 14864384 86 svchost.exe 8 1020 1 1351680 32 fontdrvhost.exe 8 308 5 196608 1526 svchost.exe 8 8 12 38608896 270 WUDFHost.exe 8 592 5 2097152 1479 svchost.exe 8 1056 11 16363520 541 svchost.exe 8 1104 15 4509696 279 svchost.exe 8 1260 3 2584576 146 svchost.exe 8 1284 1 6389760 214 svchost.exe 8 1300 3 3452928 327 svchost.exe 8 1308 6 5795840 345 svchost.exe 8 1332 13 10571776 395 svchost.exe 8 1452 7 5079040 261 svchost.exe 8 1460 5 5914624 161 svchost.exe 8 1472 2 4902912 390 svchost.exe 8 1580 11 9826304 348 WUDFHost.exe 13 1652 12 11526144 225 svchost.exe 8 1736 2 10473472 205 svchost.exe 8 1744 1 2093056 278 svchost.exe 8 1752 2 4444160 174 svchost.exe 8 1824 4 4063232 224 svchost.exe 8 1832 6 3821568 593 svchost.exe 8 2024 5 7610368 186 svchost.exe 8 1424 2 5058560 168 igfxCUIService.exe 8 2120 2 3579904 435 svchost.exe 8 2188 6 12341248 279 svchost.exe 8 2220 10 5017600 227 svchost.exe 8 2296 3 7024640 221 svchost.exe 8 2308 3 1908736 384 svchost.exe 8 2396 7 8499200 0 Memory Compression 8 2424 54 298409984 240 svchost.exe 8 2440 2 4845568 179 svchost.exe 8 2476 5 3567616 239 svchost.exe 8 2660 8 5775360 3352 svchost.exe 8 2684 9 6230016 225 svchost.exe 8 2816 2 4804608 487 svchost.exe 8 2872 7 9641984 473 svchost.exe 8 2912 4 13836288 142 svchost.exe 8 3032 4 2727936 633 svchost.exe 8 3048 3 16154624 555 svchost.exe 8 2072 14 12455936 267 svchost.exe 8 2936 4 7462912 465 spoolsv.exe 8 3168 7 4685824 420 svchost.exe 8 3200 10 8019968 187 svchost.exe 8 3324 6 2433024 174 svchost.exe 8 3572 2 2650112 416 svchost.exe 8 3584 5 13344768 540 svchost.exe 8 3592 10 24936448 161 IntelCpHDCPSvc.exe 8 3604 3 2052096 406 svchost.exe 8 3612 19 25100288