Diferencias entre Systemd y SysVinit (SysV)

Diferencias entre Systemd y SysVinit (SysV).

Systemd es el sistema de inicio y administración del sistema, que han adoptado la mayoría de distribuciones Linux. Más moderno, más complejo, y quizás con un excesivo control sobre el sistema generó una gran polémica en su implantación.

Excelentes distribuciones se negaron en rotundo a usarlo, como por ejemplo ALT Linux, Gentoo, Knoopix, PCLinux OS. En otras como Debian, los usuarios disconformes crearon un derivado, Devuan.

Lo que está claro, es que le pese a quien le pese Systemd ganó la batalla sobre el administrador tradicional de init, SysVinit. Systemd es compatible con los scripts de inicio SysV y LSB, además funciona como reemplazo directo de sysvinit.

 

Diferencias entre Systemd y SysVinit

Systemd es el primer proceso iniciado por el kernel y siempre tendrá el pid 1. Fedora 15 fue la primera distribución linux que adoptó systemd, poco a poco todas fueron en cascada (creo que la última grande fue CentOS 7).

Esta herramienta en línea de comandos administra todos los demonios, también los servicios systemd que nos permiten iniciar, reiniciar, detener, habilitar, deshabilitar, recargar y muchos más. Además, es importante saber que Systemd no usa scripts bash para manejar el sistema como SysVinit, utiliza unos archivos llamados «.service» que se suponen más rápidos. También destacamos que systemd clasifica todos los demonios en cgroups.

 

Qué es SysVinit

SysVinit, más conocido como SysV, es uno de los primeros sistemas de inicio para sistemas UNIX/Linux. El primer proceso que inicia el kernel es init, y se mantiene activo mientras la máquina siga en funcionamiento, es el proceso principal.

La gran mayoría de distros Linux utilizaban SysV, y aunque se crearon otras alternativas como Service Managament, Upstart, etc, ninguna llegó a implantarse en masa. Hasta que llegó Systemd y fue adoptada por la gran mayoría de distros, debemos reconocer que el SysVinit actual es una herramienta en desuso.

 

Qué es Systemd

Systemd es la herramienta init y administradora del sistema, que usan como estándar las distribuciones linux. Permite manejar todo el sistema systemd.

Principales características de Systemd
  • Systemd ofrece una paralelización muy potente.
  • Hace uso de la activación de socket y D-Bus para iniciar los servicios.
  • Soporta el inicio de los demonios bajo demanda.
  • Controla los procesos que utilizan el cgroups de Linux.
  • Permite crear instantáneas y posterior restauración del estado del sistema.
  • Maneja los puntos de montaje y desmontaje automáticamente.
  • Implanta una lógica de control del servicio basada en dependencias transaccionales.

 

Comandos de Systemd y SysVinit

Vemos las diferencias de los comandos más utilizados por los dos sistemas, al servicio lo denominamos ejemplo.

DescripciónComando systemdComando SysVinit
Iniciar un serviciosystemctl start ejemploservice ejemplo start
Detener un serviciosystemctl stop ejemploservice ejemplo stop
Reiniciar un serviciosystemctl restart ejemploservice ejemplo restart
Recargar un serviciosystemctl reload ejemploservice ejemplo reload
Reiniciar si el servicio
se está ejecutando
systemctl condrestart ejemploservice ejemplo condrestart
Verificar si el servicio
se está ejecutando
systemctl status ejemploservice ejemplo status
Habilitar servicio
al iniciar el sistema
systemctl enable ejemplochkconfig ejemplo on
Deshabilitar servicio
al iniciar el sistema
systemctl disable ejemplochkconfig ejemplo off
Verificar si el servicio
iniciará con el sistema
systemctl is-enabled ejemplochkconfig ejemplo -list
Lista de servicios habilitados y deshabilitados al iniciar el sistema (con niveles de ejecución)systemctl list-unit-files –type=servicechkconfig
Recargar la herramienta después de modificacionessystemctl daemon-reloadchkconfig ejemplo -add

 

Diferencia entre Targets y Runlevels

Systemd usa el concepto Targets (objetivos), que tiene un propósito muy parecido al de los Runlevels (niveles de ejecución) de SysV, pero con una forma de operar diferente. En SysVinit se interpretan con números enteros, y en Systemd se especifica el propósito.

DescripciónComando systemdComando SysVinit
Detener el sistemarunlevel0.target, poweroff.target, systemctl halt0, halt
Modo usuario únicorunlevel1.target, rescue.target1, S, single
Multiusuariorunlevel2.target, multi-user.target2
Multiusuario con redrunlevel3.target, multi-user.target3
Experimental (No User)runlevel4.target, multi-user.target4
Multiusuario con gráficos y redrunlevel5.target, graphical.target5
Reiniciar el sistemarunlevel6.target, reboot.target, systemctl reboot6, reboot
Emergency shellemergency.targetemergency

 

Otros comandos de Systemd

Como ultimo apunte del articulo es evidente que systemd es el sistema más extendido, por lo tanto siempre es conveniente conocer algunos comandos extra, seguro que te serán útiles.

Uso del comandoComando systemd
Manejar el nombre del hosthostnamectl
Herramienta de control de los demoniosteamdctl
Fecha y hora del sistematimedatectl
Registro de uso de systemdjournalctl
Tiempo de inicio del sistemasystemd-analyze / systemd-analyze time
Tiempo en iniciar cada servicio con el sistemasystemd-analyze blame
Eliminar procesos de un serviciosystemctl kill ejemplo
Listar servicios que se están ejecutandosystemctl
Estado de systemdsystemctl status
Ejecutar systemd en una máquina remotasystemctl status ejemplo -H usuario@hostremoto

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario