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ón | Comando systemd | Comando SysVinit |
---|---|---|
Iniciar un servicio | systemctl start ejemplo | service ejemplo start |
Detener un servicio | systemctl stop ejemplo | service ejemplo stop |
Reiniciar un servicio | systemctl restart ejemplo | service ejemplo restart |
Recargar un servicio | systemctl reload ejemplo | service ejemplo reload |
Reiniciar si el servicio se está ejecutando | systemctl condrestart ejemplo | service ejemplo condrestart |
Verificar si el servicio se está ejecutando | systemctl status ejemplo | service ejemplo status |
Habilitar servicio al iniciar el sistema | systemctl enable ejemplo | chkconfig ejemplo on |
Deshabilitar servicio al iniciar el sistema | systemctl disable ejemplo | chkconfig ejemplo off |
Verificar si el servicio iniciará con el sistema | systemctl is-enabled ejemplo | chkconfig ejemplo -list |
Lista de servicios habilitados y deshabilitados al iniciar el sistema (con niveles de ejecución) | systemctl list-unit-files –type=service | chkconfig |
Recargar la herramienta después de modificaciones | systemctl daemon-reload | chkconfig 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ón | Comando systemd | Comando SysVinit |
---|---|---|
Detener el sistema | runlevel0.target, poweroff.target, systemctl halt | 0, halt |
Modo usuario único | runlevel1.target, rescue.target | 1, S, single |
Multiusuario | runlevel2.target, multi-user.target | 2 |
Multiusuario con red | runlevel3.target, multi-user.target | 3 |
Experimental (No User) | runlevel4.target, multi-user.target | 4 |
Multiusuario con gráficos y red | runlevel5.target, graphical.target | 5 |
Reiniciar el sistema | runlevel6.target, reboot.target, systemctl reboot | 6, reboot |
Emergency shell | emergency.target | emergency |
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 comando | Comando systemd |
---|---|
Manejar el nombre del host | hostnamectl |
Herramienta de control de los demonios | teamdctl |
Fecha y hora del sistema | timedatectl |
Registro de uso de systemd | journalctl |
Tiempo de inicio del sistema | systemd-analyze / systemd-analyze time |
Tiempo en iniciar cada servicio con el sistema | systemd-analyze blame |
Eliminar procesos de un servicio | systemctl kill ejemplo |
Listar servicios que se están ejecutando | systemctl |
Estado de systemd | systemctl status |
Ejecutar systemd en una máquina remota | systemctl 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.