28/1/25, 2:27 p.m.
Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
Inicio | Blog | Tecnología | Redes y Sistemas
REDES Y SISTEMAS
Gestión de procesos y servicios
desde Shell Script en Windows
Aprende de forma práctica a gestionar procesos y servicios que están corriendo y
siendo lanzados a través de instrucciones de comandos Shell Script Batch.
Redes y Sistemas
Jerson Martínez
Experto DevOps
Publicado el 15 de octubre de 2021 Lectura 8 minutos
Compartir
[Link] 1/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
Tabla de contenidos
Diferencias entre un proceso y un servicio
Implementando procesos
Implementando servicios
Conclusión
Aprende de una vez por todas cómo gestionar procesos y servicios que están
corriendo y siendo lanzados en el sistema operativo por medio de instrucciones
de comandos, utilizando Shell Script Batch.
Antes de nada, tenemos que entender la diferencia entre un proceso y un
servicio, lo cual en muchos casos se tiende a confundir, refiriéndome de forma
conceptual, pues ambos se ejecutan o corren, como un “proceso”.
Para ambos casos, un proceso y un servicio, es un programa que ejecuta un
conjunto de instrucciones, que pueden correr en diferentes planos, tienen
identificador de proceso y que pueden ejecutar procesos en cascada. Todo
esto, así como en Windows, también se conoce de distintas maneras en
GNU/Linux, así que, si estás considerando aprenderlo, te recomiendo el
siguiente curso sobre Shell en Linux.
Diferencias entre un proceso y un servicio
Proceso:
Puede correr (estar en ejecución) tanto en primer como segundo plano.
Un proceso puede crear, ejecutar, detener y eliminar un servicio.
El proceso se puede matar (finalizar), no detener.
Tiene un tiempo de vida, hasta que finalice la ejecución del proceso.
Servicio:
Puede correr en segundo plano.
Un servicio también puede ejecutar procesos.
El servicio se puede iniciar, detener, reanudar y reiniciar, no matarlo.
[Link] 2/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Es posible eliminarlo, siempre que no esté en ejecución y por
medio de línea de comandos.
|||
Permanece en ejecución todo el tiempo, a menos que ocurra una
corrupción por parte del sistema.
De forma gráfica, los procesos se ven de esta manera
Para acceder, clic derecho a la barra de tareas y seleccionar la opción
“Administrador de tareas”.
También puedes ejecutar el programa [Link].
Una combinación de teclas que puedes usar para ejecutarlo, también es:
CTRL + SHIFT + ESC.
Algunas características que podemos señalar, es que, así como se puede correr
un proceso o visualizar como “uno solo”, como es el caso de Slack en la
imagen, también un proceso puede derivar en otros, para ello, dando mayor uso
a los núcleos del procesador, asimismo, manejando hilos, esto se ve usualmente
en los navegadores, por ejemplo, los que ve en la imagen, Google Chrome y
Mozilla Firefox. Estos hilos vienen dados porque el usuario ha abierto una
nueva pestaña y cada proceso se aísla como uno solo, pero que pertenece al
grupo del proceso principal.
¿Qué podemos monitorizar en los procesos?
[Link] 3/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Verificar el tipo de proceso, donde estos pueden ser, de aplicación, de
Windows y proceso en segundo plano. El de aplicación es el proceso
|||
principal, el de Windows es de los programas que vienen nativo en el
sistema y el proceso en segundo plano son los hilos de los procesos o bien,
los subprocesos que se pueden desplegar.
El estado, donde se podrá verificar si se encuentra bien o no (Usualmente
veríamos en ordenadores no tan sofisticados, que los programas digan “El
programa no responde”).
Verificar el consumo de CPU, Memoria, Disco, GPU, Red, Consumo de
energía y muchos otros atributos.
La línea de comandos, que es donde inspeccionas cómo fue llamado el proceso
y con qué parámetros.
Observa como en dependencia también del tipo de proceso, son llamados y
cómo se le pasan parámetros. Nótese que para los de tipo “Aplicación” se
ejecuta el comando svchost.
De forma gráfica, los servicios se ven de esta manera
Seguimos obteniendo datos desde el programa [Link], sin embargo, esta
vez, desde la pestaña “Servicios”.
[Link] 4/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
La descripción que podemos encontrar son:
Nombre del servicio.
PID (Process ID), este es un identificador de proceso relacionado a un
servicio.
Descripción sobre qué o quién es el fabricante del servicio.
El estado en que se encuentra el servicio. Antes habíamos visto la
diferencia en cuanto a un proceso y es que este se puede, detener,
reanudar o reiniciar, por lo tanto, el estado me mostrará si está En
ejecución o Detenido.
El grupo al que pertenece.
Por supuesto, en cuanto a los servicios, no es el único lugar donde ver
información e incluso, configurar los servicios. La central se encuentra llegando
por medio del comando [Link] y se torna de la siguiente manera:
[Link] 5/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
Desde este punto, se puede ver más información, como el tipo de inicio y el
inicio de sesión. En adición, puedes ver las propiedades sobre cada servicio.
Implementando procesos
Ahora sí, se viene la parte práctica y que me parece, debe estar expuesta, por
eso te he traído desde ejemplos sencillos hasta algo más complejos. Es el
momento de tocar la línea de comandos y comenzar a tirar instrucciones.
Los comandos que vamos a utilizar son los siguientes:
tasklist (Esta herramienta muestra una lista de procesos que se están
ejecutando en un equipo local o remoto)
WMIC (Interfaz de comandos para la gestión de Windows)
qprocess (Muestra información sobre procesos)
query (Muestra información sobre procesos, sesiones y servidores de host
de sesión de escritorio remoto)
process
session
termserver
user
taskkill (Esta herramienta se usa para terminar tareas mediante el Id. de
proceso (PID) o nombre de imagen)
tskill (Termina un proceso)
[Link] 6/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Puede que llegue un momento que, entre tanto comando, pierdas el hilo por no
conocer alguno que otro, así que, si te interesa antes, conocer sobre Shell
|||
Scripting, te dejo un artículo que escribí sobre Shell Scripting en sistemas
Windows.
Listando procesos
La monitorización de un equipo es importante, puesto que sirve para detectar
incidencias, partiendo de un conjunto de datos, bien pueden ser datos de
estado de servicios, de los mismos procesos que se están corriendo, de logs,
etc.
Listar y aplicar filtros:
La forma más básica de listar los procesos que están corriendo en el sistema es
ejecutando el comando: tasklist.
La salida de este, generará 5 columnas:
Nombre de la imagen
PID
Nombre de sesión
Núm. de sesión
Uso de memoria
Todos estos comandos son ejecutados desde la CLI (Interfaz de línea de
comandos).
[Link] 7/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Exportar CSV de datos, de aquellos procesos cuyo PID contiene el valor 264.
|||
[Link] /v | find /i "264"
También es posible utilizar filtros más avanzados, como condicionales, para
señalar que debe imprimir por pantalla todo aquel proceso donde el uso de su
memoria es mayor a 15000 y menor de 19000, por lo que, todo proceso que esté
comprendido en ese rango, será mostrado.
tasklist /fi "memusage gt 15000" /fi "memusage lt 19000"
Cada proceso tiene un nombre de imagen del proceso, por lo que también se
puede aplicar un filtro por medio de este y es de la siguiente forma:
En este ejemplo se busca listar los procesos cuya imagen sea [Link].
[Link] /v /fi "IMAGENAME eq [Link]"
Por supuesto, no podía faltar, el cómo combinar filtros, que esto ya es má de la
consola de Windows, que permite, luego de ejecutar una instrucción, ejecutar
otra por medio de &.
En este ejemplo se busca listar todos aquellos procesos cuya imagen sea
[Link] y [Link].
tasklist /FI "IMAGENAME eq [Link]" & tasklist /FI "IMAGENAME
Extraer todos los procesos con un ID de proceso superior a 1000 y mostrarlas
en formato csv:
El fichero .csv es un fichero que puedes abrir con Excel o bien, leído por
medio de algún algoritmo, como si se tratase de un JSON, solo que
separados por comas.
[Link] 8/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Se usa el parámetro fo que significa Format Output o bien, formato de
salida.
|||
tasklist /v /fi "PID gt 1000" /fo csv
La información generada en formato csv, también es posible redirigirla a un
fichero correspondiente a ese formato, ya si se desea abrirlo más tarde con
algún software que provea hoja de cálculo, para ello, ejecutar la siguiente
instrucción:
tasklist /v /fi "PID gt 1000" /fo csv > [Link]
Para enumerar los procesos del sistema que se están ejecutando actualmente,
escriba:
tasklist /fi "USERNAME ne NT AUTHORITY\SYSTEM" /fi "STATUS eq runn
Para enumerar información detallada para todos los procesos que se están
ejecutando actualmente, escriba:
tasklist /v /fi "STATUS eq running"
Para enumerar toda la información de servicio para los procesos en el equipo
remoto srvmain, que tiene un nombre DLL que comienza con ntdll, escriba:
tasklist /s srvmain /svc /fi "MODULES eq ntdll*"
Para enumerar los procesos en el equipo remoto srvmain, utilizando las
credenciales de su cuenta de usuario que ha iniciado sesión actualmente,
escriba:
[Link] 9/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
tasklist /s srvmain
Para enumerar los procesos en el equipo remoto srvmain, utilizando las
credenciales de la cuenta de usuario Hiropln, escriba:
tasklist /s srvmain /u maindom\hiropln /p p@ssW23
Otra manera de listar los procesos, es con el comando WMIC:
Obtenemos información y mejor aún, la dirigimos a un fichero [Link].
WMIC /OUTPUT:C:\[Link] PROCESS get Caption,Commandline,Processi
El comando qprocess y query son los mismos, tienen el mismo funcionamiento,
por lo tanto, usar cualquiera de los dos para obtener información sobre
servicios.
Puede utilizar este comando para averiguar qué programas está ejecutando un
usuario específico y también qué usuarios están ejecutando un programa
específico. Este comando devuelve la siguiente información:
Usuario propietario del proceso
Sesión propietaria del proceso
ID de la sesión
Nombre del proceso
ID del proceso
Para mostrar información sobre los procesos que utilizan todas las sesiones,
escriba:
query process *
[Link] 10/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Para mostrar información sobre los procesos que utiliza la ID de sesión 1 ,
escriba:
|||
query process /ID:1
Hasta este punto, está más que comprobado que con distintas maneras,
podemos extraer información sobre los procesos, además de volcar los datos
en un fichero.
Finalizando procesos
Finaliza una o más tareas o procesos. Los procesos se pueden finalizar por ID
de proceso o nombre de imagen. Puede usar el comando tasklist para listar
los procesos y determinar el ID de proceso (PID) para que el proceso finalice.
La sintaxis se presenta de esta manera:
taskkill [/s <computer> [/u [<domain>\]<username> [/p [<password>]
La forma más sencilla de matar o finalizar un proceso es por medio del
identificador de proceso (PID), donde esto se consigue listando con el comando
tasklist. Dentro de la misma instrucción, también puedes finalizar más de un
proceso, para ello, repitiendo el flag /pid asociado al PID.
La forma más básica de matar un proceso es por medio de su PID:
taskkill /pid 1230
Si lo que deseas es poder finalizar 2 o más procesos en una misma instrucción,
lo puedes lograr repitiendo el flag /pid y colocando el identificador de proceso.
taskkill /pid 1230 /pid 1241 /pid 1253
[Link] 11/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
De la misma manera en que un ejercicio anterior, sobre listar los procesos con
PID mayor a 1000, también se puede aplicar para matar procesos, haciendo lo
|||
siguiente:
taskkill /f /fi "PID ge 1000" /im *
Matar cuyos procesos no estén respondiendo y aquellos que tengan por título
de ventana “WhatsApp”
taskkill /F /FI "STATUS eq NOT RESPONDING" /FI "WINDOWTITLE ne Wha
Este comando, también tiene funcionalidades para enviar señales a hosts
remotos, indicando el nombre del servidor, nombre de dominio y las
credenciales de acceso como usuario y contraseña; lo demás, sería la misma
idea, pasarle por parámetros el nombre de la imagen o el PID a matar en la
máquina remota y listo.
En el siguiente ejemplo, te muestro el modo de conexión, además, de la
solicitud de matar los procesos cuyo nombre empiecen con “note”, de este
modo, conseguirá encontrar el [Link], notepad++ y otros procesos que
existan en el equipo corriendo con ese inicio de nombre.
taskkill /s srvmain /u hostname\username /p p@ssW23 /fi "IMAGENAME
Como último comando para matar un proceso en el sistema, es el tskill.
Puede usar este comando para finalizar solo aquellos procesos que le
pertenecen, a menos que sea un administrador. Los administradores tienen
acceso completo a todas las funciones de tskill y pueden finalizar los
procesos que se están ejecutando en otras sesiones de usuario.
Para finalizar el proceso 6543, escriba:
[Link] 12/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
tskill 1230
Para finalizar el explorador de procesos que se ejecuta en la sesión 1, escriba:
tskill explorer /id:1
Estas fueron algunas de las formas de matar procesos desde línea de
comandos utilizando los comandos taskkill y tskill.
Si quieres ir al siguiente nivel y aplicar temas de automatización, te recomiendo
pasarte por el artículo que escribí sobre automatización de procesos con Shell
Script Batch.
Implementando servicios
El comando a implementar es el siguiente:
sc (es un programa de línea de comandos usado para comunicarse con el
Administrador de control de servicios y con los servicios).
Esta instrucción tiene muchos usos para poder administrar los servicios, así
como consultar su estado, iniciar, detener, interrumpir, e incluso, eliminar de la
consola.
query: Obtiene y muestra información sobre el servicio, el controlador, el
tipo de servicio o el tipo de controlador especificados.
start: Inicia un servicio
stop: Detiene un servicio
pause: Pausa un servicio
delete: Elimina un servicio del registro de Services
create: Crea un servicio del registro
description: Cambia la descripción de un servicio.
Creando un servicio e iniciarlo
[Link] 13/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Crear un servicio con nombre “NuevoServicio” que mande a ejecutar el
programa “[Link]’ y que este tenga un arranque automático:
|||
sc create NuevoServicio binpath= c:\windows\system32\NuevoServicio
Para hacer esto mismo, pero en un host remoto, escribir el servidor de la
siguiente manera:
sc create \\miservidor NuevoServicio binpath= c:\windows\system32\
Para iniciar un servicio, basta con ejecutar la siguiente instrucción:
sc start NuevoServicio
Listar servicios
Para mostrar información solo para los servicios activos:
sc query
sc query type= service
[Link] 14/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
Mostrar información de todos los servicios, tanto activos como inactivos:
sc query state= all
Mostrar información sobre un servicio en específico:
sc query NuevoServicio
Para mostrar información de servicios interactivos, escriba:
sc query type= service type= interact
Eliminar servicios
Esta sección es la más sencilla, pues se hace aplicando el parámetro delete
seguido del nombre del servicio, de la siguiente manera:
[Link] 15/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
sc delete NuevoServicio
De esta manera, finiquitamos el modo de uso del comando sc.
Conclusión
Es importante conocer las diferencias entre un proceso y un servicio, lo cual,
con éxito lo hemos tratado, además de abordar la implementación de cada uno,
extendiendo por medio del uso de distintos comandos de la terminal de
Windows, de estos comandos nativos, para que tengas la mayor cantidad de
utilidades sin recurrir a terceros. Se ha abordado desde cómo listar procesos
hasta cómo eliminarlos, asimismo para los servicios, desde cómo crearlos,
hasta cómo eliminarlos.
Hasta este punto te digo ¡Felicidades! pues has logrado conocer una serie de
instrucciones que te ayudarán a seguir tu camino como administrador de tus
sistemas y los de otros de una manera profesional.
Compartir este post
También te puede interesar
Blog
Shell Scripting en Sistemas Windows
[Link] 16/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
Descubre qué es el Shell Scripting en Windows, cómo utilizarlo y todo lo necesario par
comenzar a aprovechar todas las ventajas que...
|||
Jerson Martínez
Blog
Automatización de procesos con Shell Script Batch
Descubre cómo utilizar Shell Script Batch para automatizar sistemas y aprovechar
todas las ventajas que ofrece esta tecnología para ahorrar tiempo.
Jerson Martínez
Curso
Shell en Linux
Intermedio 3 h. y 9 min.
Aprende profesionalmente el uso de la shell en linux en tu día a día, conoce los
comandos básicos,...
Joseba Fuentes 4.4
[Link] 17/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
|||
Productos Acerca de
Cursos Nosotros
Becas Profesores
University Contacta
Recursos
Blog
Opiniones
Soluciones Sectores
Agile Learning Tecnológicas de producto
Reportes Farmacia, salud y dispositivos médicos
LMS con integración SSO Empresas de servicios tecnológicos
Dashboard de gestión y Media & Entertainment
control de planes formativos
Organismos públicos
Creador de Rutas con IA
Entidades educativas
Servicios financieros y legales
Industria e Ingeniería
Logística y Distribución
[Link] 18/19
28/1/25, 2:27 p.m. Gestión de procesos y servicios desde Shell Script en Windows | OpenWebinars
©2025 OpenWebinars S.L. todos los derechos reservados
Mapa del sitio | Términos y Condiciones de Uso
|||
Política de Privacidad |
Política de Seguridad | Cookies
// GTM Custom HTML Tag Code
[Link] 19/19