Procesos en Windows
Administrador de Tareas
-
Programa utilizado para conocer los procesos y programas que se están ejecutando en Windows, así como el estado de los mismos.
-
También podemos utilizarlo para terminar procesos, suspenderlos, cambiar su prioridad,cambiar su afinidad, etc.
Formas de iniciarlo
Distintas formas de iniciar el “Administrador de tareas” de Windows:
- Pulsando la combinación de teclas
CTRL+ALT+SUPR
y seleccionando “Administrador de tareas”. - Pulsando la combinación de teclas
CTRL+MAYUS+ESC
. - Desde la ventana “Ejecutar…” (
WIN+R
) escribiendotaskmgr.exe
y pulsando “Ejecutar”. - Botón derecho sobre la barra de tareas o el botón de “Inicio”, opción “Administrador de tareas”.
Información sobre los procesos
- En la pestaña “Procesos” del “Administrador de tareas” disponemos de la vista sencilla de procesos.
- Los procesos aparecen agrupados: Aplicaciones, Segundo plano, Servicios, …
⚠️ Algunas versiones de Windows muestran *32
junto al nombre el proceso, indicando que se tarat de una aplicación para microprocesadores de 32 bits.
Información detallada
- En la pestaña “Detalles” del “Administrador de Tareas” disponemos de la vista clásica de procesos, con más detalles.
- Mostrar más información: Pulsamos el botón secundario del ratón sobre los encabezados y seleccionamos la opción “Seleccionar columnas”.
Cambiar la prioridad de un proceso
Botón secundario del ratón sobre el proceso > Establecer prioridad > Seleccionamos la prioridad deseada:
Cambiar la afinidad de un proceso
- En microprocesadores de varios núcleos o en equipos multiprocesador es posible indicar para cada proceso en que núcleo(s) o micros se debe ejecutar (eso es la“afinidad”).
- Botón secundario del ratón sobre el proceso > Establecer afinidad.
Terminar un proceso
-
Matar un proceso (y sus subprocesos); forzar la terminación de una aplicación.
-
Pestaña “Detalles” > botón secundario del ratón sobre el proceso > “Finalizar tarea” / “Finalizar el árbol de procesos”.
Ubicación del ejecutable
- Conocer donde se encuentra almacenado en disco el archivo ejecutable que inició el proceso.
- Pestaña “Detalles” > Botón secundario del ratón sobre el proceso > “Abrir ubicación delarchivo”.
Administrar procesos desde el Símbolo del sistema (CMD)
El comando “tasklist”
Comando que permite listar los procesos desde el Símbolo del sistema (CMD).
CMD> tasklist
Nombre de imagen PID Nombre de sesión Núm. de ses Uso de memor
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 KB
System 4 Services 0 1.116 KB
smss.exe 388 Services 0 104 KB
csrss.exe 516 Services 0 804 KB
wininit.exe 632 Services 0 236 KB
csrss.exe 640 Console 1 1.604 KB
services.exe 708 Services 0 4.620 KB
lsass.exe 716 Services 0 8.108 KB
svchost.exe 820 Services 0 248 KB
svchost.exe 844 Services 0 16.148 KB
fontdrvhost.exe 864 Services 0 436 KB
winlogon.exe 936 Console 1 1.848 KB
fontdrvhost.exe 988 Console 1 1.784 KB
svchost.exe 356 Services 0 9.556 KB
svchost.exe 556 Services 0 3.492 KB
[...]
Filtros
Es posible usar filtros con el comando tasklist
, de forma que sólo se listarán los procesos que cumplan los criterios especificados:
Nombre | Operadores | Descripción |
---|---|---|
STATUS | eq, ne | Estado del proceso: RUNNING, NOT RESPONDING, UNKNOWN |
IMAGENAME | eq, ne | Nombre del ejecutable (binario). |
PID | eq, ne, gt, lt, ge, le | Identificador del proceso. |
SESSION | eq, ne, gt, lt, ge, le | Número de sesión. |
SESSIONNAME | eq, ne | Nombre de la sesión. |
CPUTIME | eq, ne, gt, lt, ge, le | Tiempo de uso de CPU en formato HH:MM:SS. |
MEMUSAGE | eq, ne, gt, lt, ge, le | Uso de memoria en KiB. |
USERNAME | eq, ne | Nombre de usuario. |
SERVICES | eq, ne | Nombre de servicio. |
WINDOWTITLE | eq, ne | Título de la ventana. |
MODULES | eq, ne | Nombre de la DLL (librería de enlace dinámico). |
El significado de los operadores es el siguiente:
Operador | Descripción |
---|---|
eq | = |
ne | <> |
gt | > |
lt | < |
ge | >= |
le | <= |
Ejemplos
Listar los procesos que NO son del usuario SYSTEM:
CMD> tasklist /fi "USERNAME ne SYSTEM"
Listar los procesos en ejecución:
CMD> tasklist /fi "STATUS eq RUNNING"
Listar los procesos cuyo ejecutable sea “cmd.exe”:
CMD> tasklist /fi "IMAGENAME eq cmd.exe"
Lista el proceso con PID 1234:
CMD> tasklist /fi "PID eq 1234"
Listar los procesos que llevan más de 2 horas de uso de CPU y que pertenezcan al usuario “fran”:
CMD> tasklist /fi "CPUTIME ge 2:00:00" /fi "USERNAME eq fran"
El comando “taskkill”
Permite matar procesos desde el Símbolo del sistema (CMD).
Sintaxis:
taskkill [/f] /pid <pid>
taskkill [/f] /fi<filtro>
:information_source: <filtro>
sigue el mismo formato que los filtros de tasklist
.
:information_source: /f
fuerza el cierre.
Ejemplos
Mata el proceso con PID 1234:
CMD> taskkill /pid 1234
Mata todos los procesos cuyo ejecutable sea “cmd.exe”:
CMD> tasklist /fi "IMAGENAME eq cmd.exe"
Administrar procesos desde PowerShell (PS)
Get-Process
Cmdlet que permite obtener información sobre los procesos del sistema.
Orden | Descripción |
---|---|
Get-Process | Devuelve todos los procesos. |
Get-Process -Id |
Devuelve el proceso con el PID indicado. |
Get-Process -Name |
Devuelve el proceso con el nombre indicado. Se pueden usar los comodines * y ? . |
Ejemplos
Listar los procesos cuyo nombre empiece por “note”:
PS> Get-Process -Name note*
Listar los procesos cuyo nombre acabe en “ator”:
PS> Get-Process -Name *ator
Listar los procesos con PID 12 y 35:
PS> Get-Process -Id 12,35
Stop-Process
Cmdlet que permite matar los procesos del sistema.
Orden | Descripción |
---|---|
Stop-Process -Id |
Elimina el proceso con el PID indicado. |
Stop-Process -Name |
Elimina el proceso con el nombre indicado. Se puede usar el comodín * . |
:information_source: Es posible utilizar los modificadores -WhatIf
y -Confirm
.
Ejemplos
Matar al proceso con PID 1234:
PS> Stop-Process -Id 1234
Matar los procesos con nombre “notepad”:
PS> Stop-Process -Name notepad
Matar los procesos cuyo nombre empieza en “note” o acaba en “ator”:
PS> Stop-Process -Name note*,*ator
PS> Get-Process -Name note*,*ator | Stop-Process
Mostrar los procesos que se matarían si se ejecutase el comando:
PS> Get-Process | Stop-Process -WhatIf
Cambiar la prioridad
Se puede establecer la prioridad de un proceso a través de la propiedad PriorityClass
de los objetos de tipo “Process” devueltos por el cmdlet Get-Process
.
PS> $proceso = Get-Process -Id 1234
PS> $proceso.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::<prioridad>
Donde prioridad
puede ser:
Valor | Descripción |
---|---|
RealTime | Tiempo real (máxima prioridad). |
High | Alta. |
AboveNormal | Por encima de lo normal. |
Normal | Normal. |
BelowNormal | Por debajo de lo normal. |
Idle | Baja. |
Tareas en segundo plano
Otros commandlets relacionados con la gestión de los procesos en segundo plano en PowerShell son los siguientes:
Cmdlet | Descripción |
---|---|
Get-Job | Devuelve los trabajos en segundo plano iniciados desde PS. |
Start-Job | Inicia un trabajo en segundo plano vinculado a la sesión de PS actual. |
Stop-Job | Detiene un trabajo en segundo plano vinculado a la sesión de PS actual. |
Receive-Job | Obtiene el resultado de la ejecución del trabajo en segundo plano. |
Wait-Job | Espera a que termine un trabajo determinado. |
- Anterior
- Siguiente