Introducción
En Linux, un servicio es un programa que se ejecuta en segundo plano . Los servicios se pueden iniciar bajo demanda o en el momento del arranque.
Si usa Linux como su principal sistema operativo o plataforma de desarrollo, estará tratando con diferentes servicios como servidor web, ssh o cron . Saber cómo enumerar los servicios en ejecución o verificar el estado del servicio es importante al depurar problemas del sistema.
Las distribuciones de Linux más recientes utilizan systemd como el sistema de inicialización predeterminado y el administrador de servicios.
Systemd es un conjunto de herramientas para administrar sistemas Linux. Se utiliza para iniciar la máquina, administrar servicios, montar automáticamente sistemas de archivos, registrar eventos, establecer el nombre de host y otras tareas del sistema.
Este artículo explica cómo listar servicios en Linux.
Lista de servicios de Linux
Systemd utiliza el concepto de unidades, que pueden ser servicios, sockets, puntos de montaje, dispositivos, etc. Las unidades se definen mediante archivos de texto en formato ini
. Estos archivos incluyen información sobre la unidad, su configuración y los comandos que se ejecutarán. Las extensiones de nombre de archivo definen el tipo de archivo de la unidad. Por ejemplo, los archivos de la unidad de servicio del sistema tienen una extensión .service
.
systemctl
es una utilidad de línea de comandos utilizada para controlar systemd y administrar servicios. Es parte del ecosistema systemd y está disponible de forma predeterminada en todos los sistemas.
Para obtener una lista de todas las unidades de servicio cargadas, escriba:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Cada fila de salida contiene las siguientes columnas de izquierda a derecha:
UNIT
- El nombre de la unidad de servicio.LOAD
- Información sobre si el archivo de la unidad se ha cargado en la memoria.ACTIVE
- El estado de activación del archivo de la unidad de alto nivel, que puede estar activo, recargando, inactivo, fallido, en activación, en desactivación. Es una generalización de la columnaSUB
.SUB
- Lo stato di attivazione del file unit di basso livello. Il valore di questo campo dipende dal tipo di unità. Ad esempio, un'unità di tipo servizio può trovarsi in uno dei seguenti stati, morto, terminato, non riuscito, inattivo o in esecuzione.DESCRIPTION
- Breve descrizione del file unit.
Per impostazione predefinita, il comando elenca solo le unità attive caricate. Per vedere le unità caricate ma anche inattive, passa l'opzione --all
:
sudo systemctl list-units --type service --all
Se vuoi vedere tutti i file unit installati, non solo quelli caricati, usa:
sudo systemctl list-unit-files
Visualizzare lo stato del servizio
Per controllare lo stato di un servizio, usa il comando systemctl status
:
sudo systemctl status <service_name>.service
<service_name>
è il nome dell'unità di servizio che desideri controllare. Ad esempio, per determinare lo stato corrente del servizio nginx da eseguire:
sudo systemctl status nginx.service
È possibile omettere il suffisso ".service". systemctl status nginx
è uguale a systemctl status nginx.service
.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-12-11 15:37:34 CET; 1 weeks 5 days ago
Docs: man:nginx(8)
Main PID: 13172 (nginx)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/nginx.service
├─13172 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─15416 nginx: worker process
└─15417 nginx: worker process
Il comando stamperà le seguenti informazioni:
Loaded
- Se l'unità di servizio è stata caricata e il percorso completo del file dell'unità. Mostra anche se l'unità è abilitata per l'avvio al momento dell'avvio.Active
- Se il servizio è attivo e in esecuzione. Se il tuo terminale supporta i colori e il servizio è attivo e in esecuzione, il punto (●
) e la parte "attiva (in esecuzione)" verranno stampate in verde. La riga mostra anche la durata del servizio.Docs
- La documentazione del servizio.Process
- Informazioni sui processi di servizio.Main PID
- Il servizio PID.Tasks
- Il numero di attività contabilizzate per l'unità e il limite di attività.Memory
- Informazioni sulla memoria utilizzata.CGroup
- Información sobre grupos de control relacionados.
Si solo desea verificar el estado del servicio, use el comando systemctl is-active
. Por ejemplo, para verificar que el servicio nginx se esté ejecutando, ejecute:
systemctl is-active nginx.service
active
El comando le mostrará el estado del servicio. Si el servicio está activo, el comando devuelve un estado de salida 0
, que puede ser útil cuando se usa el comando dentro de scripts de shell.
Conclusión
Le mostramos cómo usar el comando systemctl
para enumerar los servicios de Linux y verificar su estado.