Problema: Ver los servicios activos en Linux
Administrar servicios en un sistema Linux es una tarea para administradores y usuarios. Systemctl, el comando principal para controlar systemd, ofrece una forma de gestionar y monitorear estos servicios. Obtener una visión general de todos los servicios en ejecución puede ser difícil sin conocer los comandos y opciones correctas.
Listado de todos los servicios en ejecución con Systemctl
Comando básico para listar servicios
Para listar todos los servicios administrados por systemd, usa este comando:
systemctl list-units --type=service
Este comando muestra una tabla con información sobre cada unidad de servicio. La salida incluye:
- UNIT: El nombre de la unidad de servicio
- LOAD: Si la definición de la unidad fue cargada
- ACTIVE: El estado de activación de alto nivel de la unidad
- SUB: El estado de activación de bajo nivel de la unidad
- DESCRIPTION: Una breve descripción del propósito de la unidad
Para mostrar solo los servicios activos, agrega la opción --state=active:
systemctl list-units --type=service --state=active
Filtrado de servicios en ejecución
Para listar solo los servicios que están en ejecución, usa:
systemctl list-units --type=service --state=running
Este comando filtra los servicios inactivos o fallidos, mostrando solo aquellos en ejecución en tu sistema.
Para una vista más compacta, usa la opción --no-pager:
systemctl list-units --type=service --state=running --no-pager
Esto evita que la salida se pagine, lo cual es útil cuando quieres canalizar los resultados a otros comandos o archivos.
Para una visión rápida de los servicios en ejecución sin detalles adicionales, usa:
systemctl list-units --type=service --state=running --plain --no-legend
Este comando elimina la información de encabezado y pie de página, proporcionando una lista limpia de servicios en ejecución.
Para contar el número de servicios en ejecución, canaliza la salida a wc:
systemctl list-units --type=service --state=running --plain --no-legend | wc -l
Este comando devolverá el número total de servicios en ejecución en tu sistema.
Consejo: Ordenar servicios en ejecución por uso de memoria
Para entender qué servicios están usando más recursos, puedes ordenar los servicios en ejecución por uso de memoria. Esto puede ayudar a los administradores de sistemas a optimizar el rendimiento del sistema.
Aquí hay un comando para listar los servicios en ejecución ordenados por uso de memoria:
systemctl list-units --type=service --state=running --no-pager | awk '{print $1}' | xargs -I {} systemctl status {} | grep Memory | sort -rnk 3 | head -n 10
Este comando:
- Lista todos los servicios en ejecución
- Extrae los nombres de los servicios
- Obtiene el estado de cada servicio
- Filtra la línea de uso de memoria
- Ordena los resultados por uso de memoria (de mayor a menor)
- Muestra los 10 servicios que más memoria consumen
La salida se verá así:
Memory: 1.2G
Memory: 800.5M
Memory: 456.3M
Memory: 234.1M
Memory: 189.7M
Memory: 156.2M
Memory: 98.4M
Memory: 76.9M
Memory: 54.3M
Memory: 43.8M
Comandos avanzados de Systemctl para la gestión de servicios
Ver información detallada del servicio
Para obtener más información sobre un servicio, usa el comando systemctl status seguido del nombre del servicio:
systemctl status nombre_del_servicio
Este comando proporciona una visión general del servicio, incluyendo:
- Estado actual (activo, inactivo, fallido)
- PID principal (ID de proceso)
- Uso de memoria
- Uso de CPU
- Hora de inicio
- Entradas de registro recientes
Ejemplo: Ver detalles del servicio SSH
systemctl status sshd
La salida incluye el estado actual del servicio, la ubicación del archivo de configuración y las entradas de registro recientes, lo que ayuda en la resolución de problemas.
Comprobar el estado del servicio
Para verificar el estado de un servicio, usa:
systemctl is-active nombre_del_servicio
Este comando devuelve "active" si el servicio está en ejecución, o "inactive" si no lo está.
Para comprobar si un servicio se inicia en el arranque:
systemctl is-enabled nombre_del_servicio
Esto devuelve "enabled" si el servicio se inicia automáticamente en el arranque, o "disabled" si no lo hace.
También puedes usar el comando systemctl show para obtener propiedades específicas de un servicio:
systemctl show -p ActiveState nombre_del_servicio
systemctl show -p UnitFileState nombre_del_servicio
Estos comandos muestran el estado activo actual y si el servicio está habilitado.
Para listar todos los servicios fallidos:
systemctl --failed --type=service
Este comando ayuda a identificar servicios que tienen problemas y pueden necesitar atención.
Métodos alternativos para listar servicios
Usando el comando PS
El comando ps ofrece otra forma de listar servicios en ejecución en Linux. Aunque no es tan detallado como systemctl, puede dar una vista rápida de los procesos activos, incluyendo servicios.
Para listar todos los procesos en ejecución, incluyendo servicios:
ps aux
Este comando muestra todos los procesos para todos los usuarios en un formato detallado. Para filtrar servicios específicos, puedes usar grep:
ps aux | grep nombre_del_servicio
Para una vista centrada en los servicios, puedes usar:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Este comando muestra el ID de proceso, ID del proceso padre, comando, uso de memoria y uso de CPU, ordenados por uso de memoria.
En comparación con systemctl, ps proporciona:
- Información de procesos en tiempo real
- Datos más detallados de uso de recursos
- La capacidad de ver procesos no gestionados por systemd
Sin embargo, carece de información específica de systemd como estados de servicios y dependencias.
Consejo: Salida personalizada de PS
Puedes personalizar la salida de ps para mostrar solo la información que necesitas. Por ejemplo, para mostrar solo el PID, el nombre del comando y el uso de memoria de los procesos, usa:
ps -eo pid,comm,%mem --sort=-%mem | head
Este comando ordena los procesos por uso de memoria y muestra los 10 procesos que más memoria consumen.
Usando el comando Top
El comando top proporciona una vista dinámica y en tiempo real de los procesos en ejecución, incluyendo servicios. Para usar top:
top
Esto abre una pantalla interactiva que muestra:
- Resumen del sistema (tiempo de actividad, carga promedio, uso de CPU)
- Lista de procesos (ordenados por uso de CPU por defecto)
Para centrarse en los servicios, puedes usar:
top -c -p $(pgrep -d',' -f nombre_del_servicio)
Este comando muestra solo los procesos relacionados con el servicio especificado.
Ventajas de usar top:
- Actualizaciones en tiempo real de la información del sistema y los procesos
- Interfaz interactiva para ordenar y filtrar
- Capacidad de ver tendencias de uso de recursos a lo largo del tiempo
Las limitaciones incluyen:
- Menos información específica de servicios en comparación con
systemctl - Puede requerir más recursos del sistema para el monitoreo continuo
Tanto ps como top complementan a systemctl al proporcionar diferentes vistas de los servicios y procesos en ejecución, permitiendo una mejor comprensión de la actividad del sistema.
Ejemplo: Monitoreo del servidor web Apache
Para monitorear el servidor web Apache usando top, puedes usar:
top -c -p $(pgrep -d',' -f apache2)
Este comando mostrará información en tiempo real sobre todos los procesos de Apache, incluyendo su uso de CPU y memoria. Es útil para rastrear el consumo de recursos de Apache durante períodos de alto tráfico.





