Lathack

Proceso Systemd en Linux

Proceso Systemd en Linux

Introducción

El proceso Systemd en Linux es un demonio de administración de sistema desarrollado para reemplazar el antiguo sistema de inicio INIT usado por SysVinit. Sin embargo, sigue manteniendo compatibilidad con sus scripts y algunas configuraciones. Al ser el primer proceso en ejecutarse luego del kernel obtiene el PID 1.

Este mecanismo de arranque es el predeterminado en Red Hat, CentOS, Debian, Ubuntu, Arch y otras distribuciones.

Funcionalidades
  • Proporciona capacidades de paralelización (procesos concurrentes)

  • Usa sockets y activación vía D-Bus para iniciar servicios

  • Proporciona inicio por demanda a los daemons

  • Implementa control basada en dependencias.

  • Seguimiento procesos usando cgroups (control de recursos)

  • Mantiene los puntos de montaje y automontaje

  • Herramientas para controlar la configuración del sistema

  • Mantiene listas de:

– Usuarios logueados

– Containers

– Máquinas virtuales

– Cuentas del sistema

– Directorios y configuraciones en tiempo de ejecución

– Servicios para configuraciones simples de red

– Servicio de sincronización de tiempo de red

  • Redireccionamiento de logs

  • Servicio de resolución de nombres

Unidades de Systemd

Systemd utiliza el concepto de “unidades”, si bien por compatibilidad se continúa manteniendo los comandos y configuraciones de los niveles de ejecución de init (runlevel, init, /etc/rc*), systemd tiene sus propios comandos para el control de los procesos. Veamos esto a continuación.

TIPO DE UNIDAD

EXTENCIÓN

DESCRIPCIÓN

Servicio

.service

Proceso supervisado y controlado por systemd.

Target

.target

Grupo de unidades y puntos de sincronización ampliamente

conocidos durante el arranque.

Automontaje

.automount

Punto de montaje automático del sistema de archivos.

Mount

.mount

Punto de montaje del sistema de archivos.

Path

.path

Ruta de un archivo o directorio. Se usa para activar otros servicios

cuando cambian o se modifican los archivos del sistema.

Scope

.scope

Gestiona un grupo de procesos del sistema desarrollados de manera

externa.

Slice

.slice

Se usan para gestionar de modo jerárquico los recursos de un

grupo de procesos.

Socket

.socket

Dirección IP, más número de Puerto de comunicación entre procesos, de red, o tubería con nombre supervisada y controlada por systemd.

Swap

.swap

Archivo swap.

Timer

.timer

Temporizador, es decir unidad que se activa basada en el tiempo y/o

fechas

Dispositivo

.device

Dispositivo que se encuentra en en sysfs y udev.

Tener en cuenta:

Es importante destacar que el proceso systemd en Linux, no solamente controla las unidades con extensión .mount, sino que también supervisa y maneja los puntos de montaje independientes y los sistemas de archivos configurados en /etc/fstab. La configuración se encuentra en dos directorios /etc/systemd/system y /usr/lib/systemd/system . Generalmente, los archivos dentro de /usr/lib/systemd/system no deben modificarse de forma manual.

Target en Systemd

En el anterior Sistema “SysVinit” se usaban los llamdas “Runlevels” (niveles de ejecución), sin embargo en el actual Systemd se usa los llamas “Targets”. Estos se usan para agrupar unidades y definir un punto de sincronización determinado durante el arranque del sistema.

Veamos una comparación de los targets con los runlevels:

SysVinit

Systemd

Descripción

Init 0

systemctl poweroff

Apaga el sistema

Init 1,s,S

systemctl rescue

Modo mantenimiento, también llamado “Usuario único”

Init 2, init 3, init 4 (depende la distribución)

systemctl multi-user

Multiusuario

Init 5

systemctl graphical

Modo de entorno gráfico

Init 6

Systemctl reboot

Reinicio del sistema

Para ver esto podemos usar el siguiente comando:

# ls –l /lib/systemd/system/runlevel*

Proceso Systemd en Linux

Para definir el modo multi-usuario:

# systemctl set-default multi-user.target

Para establecer el modo gráfico:

# systemctl set-default graphical.target

Luego para verificarlo usamos el primer comando usado anteriormente (# ls –l /lib/systemd/system/runlevel*)

Administración de servicios

Al igual que en los runlevels, existe una mínima diferencia a la hora de configurar los servicios.

La configuración de SysVinit es “Comando-Servicio-Acción”, por ejemplo: # service http start. Sin embargo, con Systemd la configuración es la misma pero con otros argumentos, por ejemplo: # systemctl enable mysql-server.

Veamos las diferencias a continuación en el siguiente cuadro:

SysVinit

Systemd

Descripción

service httpd restart

systemctl restart httpd.service

Reinicia el servicio httpd

chkconfig ssh on

systemctl enable ssh.service

Habilita el servicio ssh en el inicio

chkconfig httpd off

systemctl disable httpd.service

Deshabilita el servicio httpd en el inicio

chkconfig –list

systemctl list-unit-files

–type=service

Lista los servicios y estado de inicio

No hay equivalencia

systemctl enable –now httpd.service

Habilita el servicio httpd y arranca el servicio

Cabe mencionar que la tarea de iniciar y detener servicios del sistema (cuya intención es ser ejecutados en segundo plano, como por ejemplo, un servidor web) está a cargo de archivos y enlaces simbólicos en /etc/init.d.

NOTA:

Debemos recordar que haciendo uso del comando systemd – -help veremos la cantidad de operaciones útiles que podemos hacer con este proceso padre.

Por ejemplo, si queremos ver el estado de los servicios:

# systemctl –t service

O también podemos usar la herramienta de SysVinit:

# service –status-all 

Deja una respuesta

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

tres × 1 =

Lathack
Scroll al inicio