Systemd: Targets (multi-user.target, graphical.target)

Introducción

Los targets de systemd son el equivalente moderno a los runlevels del antiguo SysVinit. Un target agrupa un conjunto de unidades que deben estar activas para alcanzar un determinado estado del sistema (modo texto, modo gráfico, rescate, etc.).

Equivalencia runlevel → target


Runlevel  Target systemd             Descripción
   0      poweroff.target            Apagado
   1      rescue.target              Modo rescate (un solo usuario)
   2,3,4  multi-user.target          Modo multiusuario sin gráficos
   5      graphical.target           Modo multiusuario con gráficos
   6      reboot.target              Reinicio
          

Targets principales

multi-user.target

Modo multiusuario sin entorno gráfico. Equivale al runlevel 3. Es el target habitual en servidores. Incluye red, login por terminal y todos los servicios típicos de un servidor.

graphical.target

Modo multiusuario con entorno gráfico. Equivale al runlevel 5. Incluye todo lo de multi-user.target más el gestor de sesión gráfica (GDM, LightDM, SDDM…).

rescue.target

Modo de rescate con un único usuario y mínimos servicios. Equivale al antiguo runlevel 1 o modo monousuario. Útil para reparar el sistema.

emergency.target

Modo de emergencia aún más mínimo que rescue. Solo monta el sistema de archivos raíz en solo lectura. Se activa cuando hay errores críticos en el arranque.

Comandos para gestionar targets

Ver el target actual y el predeterminado:


$ systemctl get-default         # target predeterminado al arranque
$ systemctl list-units --type=target   # targets activos ahora
          

Cambiar el target predeterminado:


# systemctl set-default multi-user.target   # servidor sin gráficos
# systemctl set-default graphical.target    # con entorno gráfico
          

Cambiar al target de forma temporal (sin reiniciar):


# systemctl isolate multi-user.target   # cambiar ahora a modo texto
# systemctl isolate graphical.target    # cambiar ahora a modo gráfico
# systemctl isolate rescue.target       # entrar en modo rescate
          

isolate cambia al target indicado de forma inmediata, deteniendo los servicios que no pertenecen a ese target e iniciando los que sí pertenecen.

Apagar y reiniciar mediante targets:


# systemctl poweroff    # apagar el sistema (activa poweroff.target)
# systemctl reboot      # reiniciar (activa reboot.target)
# systemctl halt        # detener CPU sin apagar
# systemctl suspend     # suspender a RAM
# systemctl hibernate   # hibernar a disco
          

Compatibilidad con el antiguo runlevel

El comando runlevel sigue funcionando en sistemas con systemd por compatibilidad:


$ runlevel
N 5         # N = anterior (ninguno), 5 = actual
$ who -r    # también muestra el runlevel actual
          

Los targets definen el estado global del sistema y determinan qué servicios deben estar activos.

Systemd: Unidades .service, .mount, .timer

Índice de la sección

Índice del curso