Logotipo de freedesktop

Introducción a systemd y uso de systemctl

 
 

Índice General

  1. Introduccióna systemd
  2. Comandos básicos de systemctl
  3. Control del estado del sistema
  4. Manejo de las unidades
  5. Encendido y apagado del sistema

Enlaces externos
 

  1. Introducción a systend (Volver al índice General)
    systemd está formado por un conjunto de demonios, bibliotecas y herramientas que permiten la administración y configuración del sistema e interactuar con el núcleo del sistema operativo Linux. Se puede utilizar como sistema de inicio de Linux, iniciándose como PID 1 (primer proceso que se ejecuta y es el proceso padre de todos los procesos hijos) e inicializando el resto del sistema.

    systemd nace para sustituir el sistema de inicio init heredado de los sistemas operativos estilo UNIX System V y Berkeley Software Distribution (BSD). Proporciona una notable capacidad de paralelización, utiliza la activación de socket y D-Bus para inicializar los servicios, permite el inicio de los demonios bajo demanda, seguimiento de los procesos con el uso de los grupos de control de Linux, mantiene los puntos de montaje y servicios de montaje automático e implementa un elaborado sistema de gestión de dependencias basado en un control lógico de los servicios. systemd es compatible con los scripts de inicio de SysV y LSB y funciona como un remplazo de sysvinit. Otras partes incluyen un demonios de registro, utilidades para controlar la configuración básica del sistema como el nombre del equipo (hostname), la fecha, la configuración regional, mantener una lista de usuarios registrados y contenedores y máquinas virtuales en ejecución, cuentas del sistema, directorios y configuraciones de tiempo de ejecución y demonios para administrar una configuración de red simple, sincronización horaria de la red, reenvío de registros y resolución de nombres, etc.

  2.  

  3. Comandos básicos de systemctl (Volver al índice General)
    El comando principal para controlar systemd es systemctl. La sintaxis básica de systemctl es:

    systemctl [OPTIONS...] COMMAND [NAME...]

    Si queremos controlar remotamente una instancia de systemd, podemos utilizar las ordenes que a continuación veremos con el parámetro -H usuario@host. Con esto utilizaremos SSH para conectarnos a la instancia de systemd en otro equipo. Por ejemplo, el usuario mortadelo quiere conocer las unidades en ejecución en la máquina de nombre latia:

    $ systemctl -H mortadelo@latia list-units

    Cuando usamos systemctl, las unidades se corresponden con services (.service), mount points (.mount) devices (.device) o sockets (.socket). Por lo general, habrá que especificar el nombre completo de la unidad, incluyendo el sufijo. Por ejemplo:

    $ sudo systemctl start sshd.socket
    • Si se omite el sufijo, systemctl asumirá que es .service. Por ejemplo, netcfg y netcfg.service se consideran equivalente.
    • Los puntos de montaje se traducirán automáticamente en la correspondiente unidad .mount. Por ejemplo, si especificamos /var, será equivalente a var.mount.
    • Para los dispositivos se traduce automáticamente en la correspondiente unidad .device. Por ejemplo, si especificamos /dev/sda2, será equivalente a dev-sda2.device.

    Algunos nombres de unidades contienen un signo @, por ejemplo, name@string.service. Esto significa que son instancias de una unidad plantilla, cuyo nombre de archivo real no contiene la parte string, por ejemplo, name@.service. string se denomina al identificador de instancia, y es similar a un argumento que se pasa a la unidad plantilla cuando es llamada con el comando systemctl. En el archivo de unidad se sustituirá la variable %i con el identificador de instancia.

    Para ser más precisos, antes de probar inicializar una instancia de unidad de plantilla name@.suffix, systemd buscará una unidad con el nombre del archivo name@string.suffix exacto, aunque por convención, tal conflicto ocurre raramente, es decir, la mayoría de los archivos de unidades que contienen un signo @ son plantillas. Además, si se llama a una unidad de plantilla sin un identificador de instancia, simplemente fallará, ya que el especificador %i no puede ser sustituido.

    Véase $ man systemd.unit para más detalles.

    Si utilizamos el entorno de escritorio KDE Plasma, podemos instalar el paquete kde-config-systemd como interfaz gráfica para systemctl. Para instalarlo ejecutaremos el comando:

    $ sudo apt-get install kde-config-systemd

    Después de instalarlo, el módulo se agregará a Administración del sistema en la aplicación Preferencias del sistema.

    Nota: La Mayoría de los siguientes comandos funcionan si se especifican varias unidades.

    Véase $ man systemctl para conocer todas las opciones.

  4.  

  5. Control del estado del sistema (Volver al índice General)
    • Estado del sistema (Volver al índice General)
      $ systemctl status
    • Listar unidades en ejecución (Volver al índice General)
      $ systemctl

      o

      $ systemctl list-units
    • Listar unidades que han fallado (Volver al índice General)
      $ systemctl --failed
    • Listar unidades instaladas (Volver al índice General)
      Los archivos de unidades se cargan desde varias ubicaciones. Para ver la lista completa de ubicaciones, ejecutaremos el siguiente comando:

      $ systemctl show --property=UnitPath
      UnitPath=/run/systemd/transient /etc/systemd/system /run/systemd/system /run/systemd/generator /lib/systemd/system /run/systemd/generator.late

      Las principales ubicaciones, enumeradas desde la prioridad más baja a la más alta son:

      • /lib/systemd/system/: unidades proporcionadas por los paquetes instalados.
      • /etc/systemd/system/: unidades instaladas por el administrador del sistema.

       
      Para listar las unidades instaladas ejecutaremos el siguiente comando:

      $ systemctl list-unit-files

      Obtendremos un resultado similar a este:
      captura del comando: systemctl list-unit-files


  6.  
     
     

  7. Manejo de las unidades (Volver al índice General)

    • Iniciar una unidad de inmediato (Volver al índice General)
      $ sudo systemctl start unidad

      Por ejemplo, iniciar el servicio ssh:

      $ sudo systemctl start ssh.socket
    • Detener una unidad de inmediato (Volver al índice General)
      $ sudo systemctl stop unidad

      Por ejemplo, detener el servicio ssh:

      $ sudo systemctl stop ssh.socket
    • Reiniciar una unidad (Volver al índice General)
      $ sudo systemctl restart unidad

      Por ejemplo, reiniciar el servicio ssh:

      $ sudo systemctl restart ssh.socket
    • Recargar la configuración de una unidad (Volver al índice General)
      $ sudo systemctl reload unidad

      Por ejemplo, recargar la configuración del servicio Apache:

      $ sudo systemctl reload apache2.service
    • Mostrar el estado de una unidad (Volver al índice General)
      Este comando mostrará el estado se esté o no ejecutando:

      $ systemctl status unidad

      Por ejemplo, mostrar el estado del servicio ssh:

      $ systemctl status ssh.socket 
      ● ssh.socket - OpenBSD Secure Shell server socket
         Loaded: loaded (/lib/systemd/system/ssh.socket; disabled; vendor preset: enabled)
         Active: active (listening) since Thu 2019-02-28 19:11:58 CET; 16min ago
         Listen: [::]:22 (Stream)
       Accepted: 0; Connected: 0
       
      feb 28 19:11:58 deb9 systemd[1]: Closed OpenBSD Secure Shell server socket.
      feb 28 19:11:58 deb9 systemd[1]: Stopping OpenBSD Secure Shell server socket.
      feb 28 19:11:58 deb9 systemd[1]: Listening on OpenBSD Secure Shell server socket.
    • Comprobar si la unidad está activada (Volver al índice General)
      $ systemctl is-enabled unidad

      Por ejemplo, comprobar si el servicio ssh está activado:

      $ systemctl is-enabled ssh.socket 
      disabled
    • Activar una unidad para que se inicie en el arranque (Volver al índice General)
      $ sudo systemctl enable unidad

      Por ejemplo, activar el servicio ssh:

      $ sudo systemctl enable ssh.socket 
      Created symlink /etc/systemd/system/sockets.target.wants/ssh.socket → /lib/systemd/system/ssh.socket.

      Comprobamos de nuevo si el servicio ssh está activado:

      $ systemctl is-enabled ssh.socket 
      enabled
    • Activa una unidad para que se inicie en el arranque y la inicia inmediatamente (Volver al índice General)
      $ sudo systemctl enable --now unidad

      Por ejemplo, activar e iniciar el servicio ssh:

      $ sudo systemctl enable --now ssh.socket
    • Desactivar una unidad del inicio automático del arranque (Volver al índice General)
      $ sudo systemctl disable unidad

      Por ejemplo, desactivar el servicio ssh:

      $ sudo systemctl disable ssh.socket
    • Enmascarar una unidad (Volver al índice General)
      Este comando hace que sea imposible iniciar la unidad, tanto de forma manual como de dependencia, lo que hace que el enmascaramiento sea peligroso:

      $ sudo systemctl mask unidad

      Por ejemplo, enmascarar el servicio ssh:

      $ sudo systemctl mask ssh.socket
      Created symlink /etc/systemd/system/ssh.socket → /dev/null.
    • Desenmascarar una unidad (Volver al índice General)
      $ sudo systemctl unmask unidad

      Por ejemplo, desenmascarar el servicio ssh:

      $ sudo systemctl unmask ssh.socket
      Removed /etc/systemd/system/ssh.socket.
    • Muestra la página del manual asociada a una unidad (Volver al índice General)
      Este comando mostrará la página del manual si la unidad tiene una asociada:

      $ systemctl help unidad

      Por ejemplo, mostrar la página del manual del servicio cups:

      $ systemctl help cups.service
    • Recargar la configuración de systemd (Volver al índice General)
      Este comando recarga la configuración de systemd buscando unidades nuevas o modificadas. Con el uso de este comando no se le pide a las unidades modificadas que vuelvan a cargar sus configuraciones. Para cargar su configuración, véase reload.

      $ sudo systemctl daemon-reload


     
     
     

  8. Encendido y apagado del sistema (Volver al índice General)
    polkit es necesario para gestionar la energía. En Debian 9 Stretch el paquete a instalar es policyKit-1:

    $ sudo apt-get install PolicyKit-1

    Si nos encontramos en una sesión local de systemd-logind y ninguna otra sesión está activa, las órdenes siguientes funcionarán sin requerir privilegios de root. Si no es así, por ejemplo, debido a que otro usuario ha iniciado otra sesión tty, systemd requerirá la contraseña de root.

 
Enlaces externos (Volver al índice General)

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

2 comentarios

  1. Muy bueno

    Muchísimas gracias por tu aporte, tenia un problema con el inicio de samba y tras leer esto reparado en 1 minuto y eso que soy bastante novato.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.