Olvidarse de rc.local
.
Como dije sobre CentOS 7 y sobre Debian 8 y sobre Ubuntu 15 :
Estás utilizando un sistema operativo systemd + Linux. /etc/rc.local
es un doble mecanismo de compatibilidad con versiones anteriores en systemd, porque es un mecanismo de compatibilidad con versiones anteriores para un mecanismo que era en sí mismo un mecanismo de compatibilidad en el clon del Sistema 5 de Van Smoorenburg rc
.
Usar /etc/rc.local
puede salir terriblemente mal. La gente se ha sorprendido por el hecho de que systemd no se ejecuta rc.local
de la misma manera, en el mismo lugar en el arranque, como solía hacerlo. (O erróneamente espere: de hecho, no se ejecutó por última vez en el sistema anterior, como todavía señala el manual de OpenBSD). Otros se han sorprendido por el hecho de que lo que establecieron al rc.local
esperar las viejas formas de hacer las cosas, es entonces completamente deshecho por los gustos de las nuevas udev
normas, NetworkManager, systemd-logind
, systemd-resolved
, o varios "kit" s.
Como se ejemplifica en " ¿Por qué` init 0` resulta en "Argumentos excesivos" en la instalación de Arch? ", Algunos sistemas operativos ya proporcionan systemd sin las características de compatibilidad con versiones anteriores , como el systemd-rc-local-generator
generador . Mientras Debian aún conserva las características de compatibilidad con versiones anteriores , Arch Linux construye systemd con ellas desactivadas . Entonces, en Arch y sistemas operativos como este, se espera /etc/rc.local
que se ignore por completo .
Olvidarse de rc.local
. No es el camino a seguir. Tiene un sistema operativo systemd + Linux. Por lo tanto, cree una unidad de servicio systemd adecuada y no comience desde un punto que esté a dos niveles de compatibilidad con versiones anteriores. (En Ubuntu y Fedora, se eliminó tres veces, el clon de Van Smoorenburg System 5 rc
que siguió rc.local
luego fue reemplazado dos veces , hace más de una década, primero por advenedizo y luego por systemd).
Recuerde también la primera regla para migrar a systemd .
Esto ni siquiera es una idea nueva que sea específica de systemd. En los sistemas van Smoorenburg rc
y Upstart, lo que había que hacer era crear un rc
script de van Smoorenburg o un archivo de trabajo Upstart adecuado en lugar de usarlos rc.local
. Incluso el manual de FreeBSD señala que hoy en día uno crea un rc
script Mewburn adecuado en lugar de usarlo /etc/rc.local
. Mewburn rc
fue presentado por NetBSD 1.5 en 2000.
/etc/rc.local
data de la época de la Séptima Edición Unix y anteriores. Fue reemplazado /etc/inittab
y basado rc
en un nivel de ejecución en AT&T Unix System 3 (con un poco diferente /etc/inittab
en AT&T Unix System 5) en 1983 . Incluso eso es ahora historia.
Cree definiciones de servicio nativas adecuadas para su sistema de gestión de servicios, ya sea un paquete de servicios para el conjunto de herramientas nosh service-manager
y system-control
, un /etc/rc.d/
script para Mewburn rc
, un archivo de unidad de servicio para systemd, un archivo de trabajo para Upstart, un directorio de servicio para runit / s6 / daemontools -encore, o incluso un /etc/init.d/
guión para van Smoorenburg rc
.
En systemd, estos archivos de unidad de servicio agregados por el administrador entran /etc/systemd/system/
generalmente (o /usr/local/lib/systemd/system/
raramente). Con el administrador de servicios nosh, /var/local/sv/
es un lugar convencional para paquetes de servicios locales. Mewburn rc
en los usos de FreeBSD /usr/local/etc/rc.d/
. Sin embargo, los archivos de la unidad de servicio empaquetada y los paquetes de servicio, si los está haciendo, van a diferentes lugares.
Otras lecturas