Hace muchos años, podemos escribir nuestro script de inicio /etc/rc.local
. Después de cargar todos los servicios del sistema, se ejecutará su secuencia de comandos.
Ahora, usamos systemd, ya no tenemos rc.local
. Systemd inicia el servicio en paralelo. Puede escribir su propio servicio para actuar como rc.local` pero no puede asegurarse de que se ejecutará después de que se carguen todos los servicios del sistema.
¿Hay una manera de hacerlo? ¿O tenemos que usar Before
y After
en el archivo de servicio systemd?
Respuestas:
En systemd se recomienda usar
Before=
yAfter=
ordenar sus servicios muy bien en relación con los demás.Pero dado que solicitó una forma sin usar
Before
yAfter
, puede usar:que como
man systemd.service
explica:fuente
/proc/sys/kernel/modules_disabled
al1
final del proceso de arranqueRealmente depende de su definición de "arrancado". Supongo que desea que se ejecute inmediatamente después de que comience el getty. Para hacer esto, debe agregar su servicio al
/etc/systemd/system/getty.target.wants/
directorio. También debe asegurarse de que su archivo esté usando un código similar a los otros servicios en este directorio. Para ejecutar un servicio personalizado en el arranque y apagado (solo suena el zumbador de mi placa base), uso el siguiente script en/etc/systemd/system/getty.target.wants/service_name.service
/usr/bin/myinitscript.sh
es ejecutable y tiene un shebang al inicio.Tenga en cuenta que no todo se iniciará en este punto del arranque, pero este es el punto en el que aparece el mensaje de inicio de sesión para el usuario
Aunque esto hace uso
Before=
yAfter=
, lo fue para mí mucho más comprensible y realmente funciona; No encontré la respuesta anterior lo suficientemente informativa. Esto también le permite usar ambosExecStart=
yExecStop=
, en lugar de limitarse a unType=simple
servicio similar.fuente
No estoy familiarizado con los detalles o ArchLinux, pero aquí está cómo administrar systemd en general.
Bueno, básicamente systemd es una colección de scripts en /etc/init.d/ que están apuntados por enlaces simbólicos de /etc/rcX.d, donde X es el número de nivel de ejecución. Los enlaces simbólicos en sí tienen el siguiente formato:
dónde:
Entonces, si desea que su secuencia de comandos se ejecute en último lugar en la secuencia de inicio, debe hacer lo siguiente:
runlevel
ls /etc/rc<target runlevel>.d/
y elija un número de dos dígitos que sea mayor que cualquier otro que ya esté allí.update-rc.d
para Debian ochkconfig
para Fedora o manualmente, cree un enlace simbólico /etc/rc.d/S a su script de inicio.fuente