GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo enumerar los servicios de Systemd en Linux

Si bien systemd resuelve muchos problemas con la administración del sistema, a veces también es confuso.

Incluso una tarea simple como enumerar los servicios de systemd podría hacerle pensar.

En este artículo, le mostraré cómo enumerar los servicios de systemd. También explicaré el resultado para que le resulte más fácil comprender los diferentes estados de los servicios.

Supongo que tiene algún conocimiento de systemd, pero incluso si no lo tiene, debería estar bien.

Cómo listar servicios activos en systemd

Los servicios systemd son administrados por systemctl dominio. Si ejecuta systemctl sin ningún argumento, invoca las list-units predeterminadas subcomando y enumera varios tipos de unidades systemd como servicios, sockets, objetivos, etc.

Pero su objetivo es enumerar los servicios para especificar el tipo de unidad con --type marcar así:

systemctl --type=service

¿Te diste cuenta de que no especifiqué las list-units? subcomando porque es el predeterminado? Si desea seguir la convención, también puede especificarlo. Lo prefiero así y seguiré esta convención en el resto del tutorial.

systemctl list-units --type=service

En ambos casos la salida será la misma. De forma predeterminada, este comando muestra solo los servicios cargados y activos en orden alfabético:

  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION                                                       
  accounts-daemon.service  loaded active running Accounts Service                                                  
  acpid.service            loaded active running ACPI event daemon                                                 
  alsa-restore.service     loaded active exited  Save/Restore Sound Card State                                     
  apparmor.service         loaded active exited  Load AppArmor profiles                                            
  apport.service           loaded active exited  LSB: automatic crash report generation

Déjame explicarte el resultado:

  • UNIT :nombre de la unidad systemd.
  • LOAD : si el archivo de configuración de la unidad ha sido analizado por systemd.
  • ACTIVE :estado de alto nivel de la unidad.
  • SUB :estado de bajo nivel de la unidad. Una unidad activa puede estar en estado de funcionamiento o de salida. Este valor depende del tipo de servicio.

Como puede ver, puede enumerar los servicios cargados en su sistema Linux. Pero un servicio systemd activo podría estar ejecutándose o podría salirse (después de ejecutarse correctamente).

Lista de todos los servicios de systemd en ejecución

El estado activo también puede tener un subestado como en ejecución, salido, etc. Puede usar el mismo --state marca con el subestado.

Para enumerar los servicios de systemd en ejecución, utilice --state=running marcar así:

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

Aquí hay una salida de muestra para mi sistema que muestra algunos de los servicios systemd en ejecución:

  UNIT                        LOAD   ACTIVE SUB     DESCRIPTION                                                     
  accounts-daemon.service     loaded active running Accounts Service                                                
  acpid.service               loaded active running ACPI event daemon                                               
  avahi-daemon.service        loaded active running Avahi mDNS/DNS-SD Stack                                         
  bluetooth.service           loaded active running Bluetooth service                                               
  bolt.service                loaded active running Thunderbolt system service        

Lista todos los servicios systemd cargados, incluidos los inactivos

De forma predeterminada, el comando systemctl solo muestra las unidades cargadas y activas.

Si desea enumerar todos los servicios cargados, incluidos los inactivos, use el --all bandera:

systemctl list-units --all --type=service

Ahora puedes ver incluso los servicios inactivos:

  UNIT                                                  LOAD      ACTIVE   SUB     DESCRIPTION                                                                     
  accounts-daemon.service                               loaded    active   running Accounts Service                                                                
  acpid.service                                         loaded    active   running ACPI event daemon                                                               
  alsa-restore.service                                  loaded    active   exited  Save/Restore Sound Card State                                                   
  alsa-state.service                                    loaded    inactive dead    Manage Sound Card State (restore and store)                                     
  anacron.service                                       loaded    inactive dead    Run anacron jobs                                                                
  apparmor.service                                      loaded    active   exited  Load AppArmor profiles 

Lista de todos los servicios systemd inactivos

Si desea ver solo los servicios inactivos, puede combinar varios indicadores como --all y --state así:

systemctl list-units --all --type=service --state=inactive

Como puede ver en la salida, muestra todos los servicios systemd inactivos:

  UNIT                                   LOAD      ACTIVE   SUB  DESCRIPTION                                                                     
  alsa-state.service                     loaded    inactive dead Manage Sound Card State (restore and store)                                     
  anacron.service                        loaded    inactive dead Run anacron jobs                                                                
  apport-autoreport.service              loaded    inactive dead Process error reports when automatic reporting is enabled                       
  apt-daily-upgrade.service              loaded    inactive dead Daily apt upgrade and clean activities                                          
  apt-daily.service                      loaded    inactive dead Daily apt download activities                                                   
● auditd.service                         not-found inactive dead auditd.service                              

Enumerar todos los servicios systemd instalados (incluso si no están cargados)

Cada unidad de systemd, ya sea servicio, socket o cualquier otra unidad, tiene un archivo de unidad que

systemctl list-unit-files --type=service

Esto es lo que debería ver:

UNIT FILE                                  STATE           VENDOR PRESET
accounts-daemon.service                    enabled         enabled      
acpid.service                              disabled        enabled      
alsa-restore.service                       static          enabled      
alsa-state.service                         static          enabled      
alsa-utils.service                         masked          enabled      
anacron.service                            enabled         enabled      
apparmor.service                           enabled         enabled      
apport-autoreport.service                  static          enabled      
[email protected]                    static          enabled     

Explicar cada tipo de estado será demasiado largo y no está dentro del alcance de este artículo. Tal vez escribiré sobre eso en el futuro.

Lista todos los servicios de systemd que se ejecutarán en cada arranque automáticamente

Para ver todos los servicios de systemd que se ejecutarán automáticamente cada vez que se inicie el sistema, use este comando:

systemctl list-unit-files --type=service --state=enabled

¿Estás confundido con el estado habilitado? Eso es normal. Muchos usuarios nuevos confunden un servicio del sistema habilitado con un servicio en ejecución.

Sin embargo, un servicio systemd habilitado significa que el servicio se activará automáticamente cuando se inicie el sistema.

UNIT FILE                                  STATE   VENDOR PRESET
accounts-daemon.service                    enabled enabled      
anacron.service                            enabled enabled      
apparmor.service                           enabled enabled      
[email protected]                            enabled enabled      
avahi-daemon.service                       enabled enabled      
binfmt-support.service                     enabled enabled      
bluetooth.service                          enabled enabled      
console-setup.service                      enabled enabled      
containerd.service                         enabled enabled      
cron.service                               enabled enabled      
cups-browsed.service                       enabled enabled      
cups.service                               enabled enabled      
dbus-fi.w1.wpa_supplicant1.service         enabled enabled      

¿Te das cuenta del ajuste preestablecido del proveedor? También estuvo presente en el ejemplo anterior.

El preajuste del proveedor define el comportamiento automático de la unidad systemd cuando se instala un programa.

Suponga que instaló un nuevo programa XYZ. Este XYZ tiene un servicio systemd llamado xyz.service con preajuste de proveedor habilitado. Esto significa que después de instalar el programa, cuando inicie el sistema, este servicio xyz se activará automáticamente en el momento del inicio.

Si el preajuste del proveedor está deshabilitado, deberá configurarlo manualmente para habilitarlo. Una vez que está habilitado, se inicia automáticamente cada arranque.

sudo systemd enable xyz.service

Mostrar el estado de un particular systemd service

Hasta ahora, ha visto varias formas de enumerar servicios. Pero nada se centra en un solo servicio.

Puede obtener información detallada sobre un servicio systemd utilizando el status subcomando de systemctl. La finalización de pestañas funciona con este comando.

systemctl status <service_name>

Aquí hay un ejemplo con el servicio de administrador de red:

[email protected]:~$ systemctl status NetworkManager.service 
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-07-23 08:12:44 IST; 3h 8min ago
       Docs: man:NetworkManager(8)
   Main PID: 711 (NetworkManager)
      Tasks: 3 (limit: 9157)
     Memory: 13.6M
     CGroup: /system.slice/NetworkManager.service
             └─711 /usr/sbin/NetworkManager --no-daemon

Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7159] device (wlp58s0): Activation: successful, device activated.
Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7179] manager: startup complete
Jul 23 08:12:51 itsfoss NetworkManager[711]: <info>  [1595472171.5592] manager: NetworkManager state is now CONNECTED_GLOBAL
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.7973] dhcp6 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8017] policy: set 'JioFi3_215810' (wlp58s0) as default for IPv6 routing and DNS
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8058] dhcp6 (wlp58s0): option dhcp6_name_servers   => 'fe80::a8dc:79ff:fe1b:57fe'
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8059] dhcp6 (wlp58s0): state changed unknown -> bound
Jul 23 08:12:59 itsfoss NetworkManager[711]: <info>  [1595472179.9251] agent-manager: agent[bdd71d4a66098713,:1.84/org.gnome.Shell.NetworkAgent/1>
Jul 23 11:18:10 itsfoss NetworkManager[711]: <info>  [1595483290.7874] manager: NetworkManager state is now CONNECTED_SITE
Jul 23 11:18:11 itsfoss NetworkManager[711]: <info>  [1595483291.5893] manager: NetworkManager state is now CONNECTED_GLOBAL

Puede ver que proporciona mucha información útil como el estado del servicio, la página del manual del servicio, la memoria que consume, la identificación del proceso, etc. También muestra los últimos registros del servicio.

Si desea verificar si un servicio está activo o no en un script de shell, puede usar is-active subcomando. La salida es 0 para activo.

systemctl is-active application.service

De manera similar, si desea verificar si un servicio está habilitado (configurado para iniciarse automáticamente en el momento del arranque), puede usar is-enabled subcomando. La salida es 0 para el servicio habilitado.

systemctl is-enabled application.service

Conclusión

Creo que ahora tiene una mejor comprensión de la lista de servicios systemd. Espero que hayas aprendido algunas cosas nuevas sobre systemd y el comando systemctl.

No dude en enviar sus comentarios, preguntas o sugerencias en la sección de comentarios.


Linux
  1. Cómo administrar y enumerar servicios en Linux

  2. Cómo administrar los servicios de Systemd con Systemctl en Linux

  3. Cómo usar el comando Systemctl para administrar los servicios de Systemd

  4. Cómo crear un servicio Systemd en Linux

  5. Agregar un nuevo servicio a Linux systemd

Cómo enumerar los servicios de inicio en el arranque en Linux

Cómo enumerar los paquetes instalados en Linux

Cómo enumerar particiones de disco en Linux

Cómo reiniciar los servicios de red en Linux

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo enumerar servicios en Linux