Cómo listar servicios en ejecución en Linux: Una guía completa para todos los sistemas init

2025-02-12 · Actualizado 2026-07-06

Respuesta rápida: Cómo listar servicios en ejecución en Linux

Para listar los servicios en ejecución en Linux, utilice uno de estos comandos según su sistema init:

  • systemd (Ubuntu 24.04, Debian 12, CentOS/RHEL 9, Fedora 40+ y la mayoría de las distribuciones modernas en 2026):
    systemctl list-units --type=service --state=running
    
    O, para listar todas las unidades de servicio sea cual sea su estado:
    systemctl --type=service
    
  • SysVinit / sistemas más antiguos (o para incluir scripts init heredados):
    service --status-all
    

systemd es el sistema init predeterminado en prácticamente todas las distribuciones de Linux principales de hoy en día, por lo que systemctl list-units --type=service --state=running es la respuesta en la gran mayoría de los casos. Muestra una tabla de los servicios actualmente activos con sus estados LOAD, ACTIVE y SUB. Si no se encuentra systemctl, su sistema no está ejecutando systemd; recurra a service --status-all (SysVinit) o rc-status (OpenRC).

El resto de esta guía explica cada método en detalle, incluidos el filtrado por estado, la comprobación de los servicios que se inician con el sistema y la búsqueda de servicios por puerto.

Introducción

Los servicios de Linux son procesos en segundo plano que se ejecutan de forma continua para realizar tareas del sistema, como gestionar las redes, administrar los inicios de sesión de los usuarios o ejecutar servidores web. Estos servicios pueden administrarse mediante diversas herramientas, según la distribución de Linux y el sistema init en uso. En 2026, systemd es el sistema init estándar en casi todas las distribuciones principales, por lo que la mayor parte de esta guía se centra en el comando systemctl.

Saber cómo listar los servicios en ejecución es esencial para los administradores de sistemas y los desarrolladores. Resulta útil para:

  • Resolver problemas – Comprobar si un servicio crítico está en ejecución o ha fallado.
  • Supervisar el rendimiento – Identificar los servicios que consumen muchos recursos.
  • Auditar la seguridad – Asegurarse de que solo estén activos los servicios necesarios.

Uso de systemctl (para sistemas basados en systemd)

La mayoría de las distribuciones modernas de Linux utilizan systemd como sistema init. Esto incluye las versiones actuales de 2026, como Ubuntu (de la 16.04 a la 24.04 LTS y posteriores), Debian (de la 8 a la 12 "Bookworm" y posteriores), Fedora (40 y posteriores), CentOS Stream / RHEL / Rocky Linux / AlmaLinux (de la 7 a la 9 y posteriores) y openSUSE. El comando systemctl es la herramienta principal para gestionar y listar servicios en todos estos sistemas.

Comprobar el estado de un servicio concreto

Para comprobar si un servicio concreto está en ejecución, utilice:

systemctl status <nombre-del-servicio>

Por ejemplo, para comprobar si el servidor web nginx está en ejecución:

systemctl status nginx

La salida mostrará si el servicio está activo (en ejecución), inactivo o fallido, junto con los registros para su depuración.

Listar todos los servicios activos

Para listar todos los servicios en ejecución, utilice:

systemctl list-units --type=service --state=running

Este comando muestra una tabla de todos los servicios que están en ejecución en ese momento, junto con su estado.

Listar todos los servicios (incluidos los inactivos)

Si desea ver todos los servicios, independientemente de si están en ejecución o no:

systemctl list-units --type=service

Esto incluirá los servicios que están activos, inactivos, fallidos o en otros estados.

Filtrar los servicios por estado

Puede filtrar los servicios según su estado con:

systemctl list-units --type=service --state=failed

Esto listará solo los servicios fallidos, lo cual puede resultar útil para la resolución de problemas.

Listar los servicios habilitados en el arranque

Para comprobar qué servicios están configurados para iniciarse automáticamente al arrancar:

systemctl list-unit-files --type=service | grep enabled

Ejemplo de salida

Una salida típica de systemctl list-units --type=service --state=running podría tener este aspecto:

UNIT                        LOAD   ACTIVE SUB     DESCRIPTION
cron.service                loaded active running Regular background program processing daemon
networking.service          loaded active running Raise network interfaces
ssh.service                 loaded active running OpenBSD Secure Shell server
systemd-logind.service      loaded active running Login Service

Resumen

  • Use systemctl status <servicio> para comprobar el estado de un servicio concreto.
  • Use systemctl list-units --type=service --state=running para listar los servicios activos.
  • Use systemctl list-units --type=service para ver todos los servicios.
  • Use systemctl list-unit-files --type=service para ver los servicios habilitados en el arranque.

Uso de ps y grep para los procesos en ejecución

Si desea listar los servicios en ejecución sin depender de systemctl ni de otras herramientas de gestión de servicios, puede usar ps (estado de los procesos) junto con grep para localizar procesos concretos.

Este método es útil cuando:

  • Trabaja en un sistema Linux mínimo que carece de los comandos systemctl o service.
  • Desea comprobar si un proceso concreto está en ejecución, independientemente del sistema init.

Listar todos los procesos en ejecución

El comando ps aux muestra todos los procesos en ejecución del sistema:

ps aux

Esto genera una lista extensa de todos los procesos en ejecución, con sus identificadores de proceso (PID), el uso de CPU, el uso de memoria y los nombres de los comandos.

Buscar un servicio concreto

Para comprobar si un servicio determinado está en ejecución, utilice ps aux | grep <nombre-del-servicio>:

ps aux | grep nginx

Esto mostrará las líneas que contienen "nginx", lo que indica si está en ejecución. La salida puede tener este aspecto:

root      1034  0.0  0.3  49536  3412 ?        Ss   12:34   0:00 nginx: master process /usr/sbin/nginx
www-data  1035  0.0  0.2  49536  2824 ?        S    12:34   0:00 nginx: worker process
user      2045  0.0  0.0  14856   900 pts/0    S+   12:35   0:00 grep --color=auto nginx

Aquí:

  • Las dos primeras líneas indican que el servicio nginx está en ejecución.
  • La última línea (grep --color=auto nginx) es el propio comando grep. Puede excluirla con:
ps aux | grep nginx | grep -v grep

Mostrar los procesos en formato jerárquico

Para obtener una vista más estructurada, utilice:

ps fax

Esto muestra una estructura en árbol de los procesos en ejecución, lo que facilita identificar qué servicios se están ejecutando y sus procesos hijos.

Encontrar servicios por puerto

Si sospecha que un servicio se está ejecutando en un puerto concreto, pero no está seguro del nombre del servicio, utilice:

netstat -tulnp | grep :80

o, si netstat no está disponible:

ss -tulnp | grep :80

Esto listará el proceso que utiliza el puerto 80 (habitualmente usado por servidores web como Nginx o Apache).

Resumen

  • Use ps aux para listar todos los procesos en ejecución.
  • Use ps aux | grep <nombre-del-servicio> para comprobar un servicio concreto.
  • Use ps fax para obtener una vista en árbol de los procesos.
  • Use netstat -tulnp o ss -tulnp para encontrar los servicios que se ejecutan en puertos concretos.
Cómo listar servicios en ejecución en Linux

FAQ (Preguntas Frecuentes)

1. ¿Cómo compruebo si un servicio está en ejecución en Linux?

Puede usar distintos métodos según su distribución de Linux:

  • Para sistemas basados en systemd:
    systemctl status <nombre-del-servicio>
    
  • Para sistemas basados en SysVinit:
    service <nombre-del-servicio> status
    
  • Con ps y grep:
    ps aux | grep <nombre-del-servicio>
    

2. ¿Cómo listo todos los servicios en ejecución?

  • Para sistemas basados en systemd:
    systemctl list-units --type=service --state=running
    
  • Para sistemas basados en SysVinit:
    service --status-all
    
  • Con el comando ps:
    ps aux
    

3. ¿Cómo puedo comprobar si un servicio se inicia en el arranque?

  • Para systemd:
    systemctl is-enabled <nombre-del-servicio>
    
  • Para SysVinit (sistemas basados en RHEL):
    chkconfig --list <nombre-del-servicio>
    

4. ¿Cómo reinicio un servicio?

  • Para sistemas basados en systemd:
    sudo systemctl restart <nombre-del-servicio>
    
  • Para sistemas basados en SysVinit:
    sudo service <nombre-del-servicio> restart
    

5. ¿Cómo detengo o deshabilito un servicio?

  • Para detener un servicio temporalmente:
    sudo systemctl stop <nombre-del-servicio>
    
  • Para evitar que un servicio se inicie en el arranque:
    sudo systemctl disable <nombre-del-servicio>
    

6. ¿Cómo puedo saber qué servicio está usando un puerto concreto?

Puede usar netstat o ss para encontrar los servicios que se ejecutan en un puerto concreto:

netstat -tulnp | grep :80

o

ss -tulnp | grep :80

7. ¿Qué ocurre si no se encuentra systemctl?

Si obtiene un error como command not found: systemctl, significa que es posible que su sistema no esté usando systemd. Pruebe con:

service --status-all

o

ps aux | grep <nombre-del-servicio>

8. ¿Cómo listo los servicios fallidos?

En los sistemas basados en systemd, ejecute:

systemctl list-units --type=service --state=failed

9. ¿Cómo habilito el registro de un servicio concreto?

Para consultar los registros de un servicio gestionado por systemd, utilice:

journalctl -u <nombre-del-servicio>

Para ver los registros en tiempo real:

journalctl -u <nombre-del-servicio> -f

10. ¿Puedo usar top o htop para ver los servicios en ejecución?

¡Sí! top y htop ofrecen una vista en vivo de los procesos en ejecución:

  • Use top:
    top
    
  • Use htop (interactivo y fácil de usar):
    htop
    
    (Instálelo con sudo apt install htop o sudo yum install htop si no está disponible.)