Quiero mejorar el tiempo de arranque de mi Ubuntu GNOME 16.04 deshabilitando los servicios de plymouth al arrancar. He encontrado dos respuestas sobre cómo hacerlo en varios sitios web, a saber:
# systemctl disable plymouth-quit-wait.service
# systemctl mask plymouth-quit-wait.service
No puedo ejecutar ninguno de los anteriores a menos que sepa lo que hacen.
Respuestas:
Si un servicio es
enabled
, entonces hay un enlace simbólico en algún lugar dea un archivo de unidad, con mayor frecuencia en algún lugar de
De manera útil, cuando prestas
enable
un servicio, las rutas completas del enlace y el destino creados se imprimirán en stdout.Al deshabilitar el servicio, se elimina el enlace simbólico, por lo que el archivo de la unidad en sí no se ve afectado, pero el servicio no se carga en el próximo inicio, cuando se lee systemd
/etc/systemd/system
.Sin embargo, se puede cargar un servicio deshabilitado y se iniciará si se inicia un servicio que depende de él ;
enable
ydisable
solo configura el comportamiento de inicio automático para las unidades, y el estado se anula fácilmente.Un servicio enmascarado es aquel cuyo archivo de unidad es un enlace simbólico
/dev/null
. Esto hace que sea "imposible" cargar el servicio, incluso si es requerido por otro servicio habilitado.Cuando se
mask
presta un servicio, se crea un enlace simbólico desde/etc/systemd/system
hasta/dev/null
, dejando intacto el archivo de la unidad original en otro lugar. Cuandounmask
un servicio se elimina el enlace simbólico.Sin embargo, he notado que estos comandos no siempre se cumplen.
Cuando intento enmascarar la mayoría de los servicios, falla:
Por supuesto, primero detuve el servicio. @Anwar sugiere que el enmascaramiento solo es posible para servicios no críticos.
Desenmascarar un servicio enmascarado, a menos que yo mismo lo haya enmascarado, también falla (en silencio). Creo que esto se debe a que no hay un archivo unitario para el servicio en ninguna parte, excepto en forma de enlace simbólico
/dev/null
, esta vez en/lib/systemd/system
:No soy el único que tiene este problema.
Para desenmascarar el servicio enmascarado x11-common, tuve que eliminar el enlace simbólico a
/dev/null
ysudo apt-get install --reinstall x11-common && sudo systemctl daemon-reload
. Ahora, cuando lo consulto,systemctl status x11-common
veo que el servicio tiene un bonito círculo verde y está cargado y activo (salido) aunque no tiene un archivo unitario.Para mayor referencia, este artículo sobre cómo usar Systemctl puede ser de alguna utilidad.
fuente
systemctl status x11-common ● x11-common.service Loaded: masked (/dev/null; bad) Active: inactive (dead)
. ¿Es tan malo? Pero estoy en Debian, no Ubuntu. De todos modos, buena explicación. Gracias.Es bastante simple
systemctl start
,systemctl stop
: inicia (detiene) la unidad en cuestión inmediatamente ;systemctl enable
,systemctl disable
: marca (desmarca) la unidad para el inicio automático en el momento del arranque (de una manera específica de la unidad, descrita en su[Install]
sección);systemctl mask
,systemctl unmask
: no permite (permite) todos y cualquier intento de iniciar la unidad en cuestión (ya sea manualmente o como dependencia de cualquier otra unidad, incluidas las dependencias del objetivo de inicio predeterminado). Tenga en cuenta que el marcado para el inicio automático en systemd se implementa al agregar una dependencia artificial del objetivo de inicio predeterminado a la unidad en cuestión, por lo que "máscara" también impide el inicio automático.Ref .: systemctl (1) .
Más: Lennart Poettering (2011-03-02). "Los tres niveles de apagado" . systemd para administradores . 0pointer.de.
fuente
En breve,
disable
hace que la unidad se deshabilite durante el arranque. Pero esa unidad se puede iniciar en cualquier momento después del arranque.mask
desactiva la unidad por completo. No se puede iniciar sin desenmascarar. Eso implica automáticamente que fallará durante el arranque.fuente
mask
yunmask
trabajar para usted? (¡Entiendo totalmente si no quieres probar!)[email protected]
servicio.