Es posible crear scripts y hacer que se ejecuten durante el arranque del sistema, antes de que se nos muestre el login. En esta receta veremos cómo incluirlos y cómo borrarlos.

Introducción

Durante el arranque y la parada del ordenador, el sistema entra en varios niveles de ejecución. Los niveles 2, 3, 4, 5 son los de arranque o inicio; 0, 1, 6 son los niveles de parada o apagado; y S es el nivel monousuario. En el directorio /etc hay una serie de directorios nombrados rcX.d, donde la X indica el nivel de ejecución. Dentro de estos directorios hay una serie de enlaces simbólicos hacia los scripts que se ejecutan en cada nivel. Los enlaces se llaman igual que el script al que apuntan, pero con un prefijo consistente en una S o una K más un número de dos dígitos. La letra indica si es un script de inicio (Start) o de parada (Kill), y el número indica el orden en que se ejecuta. Por defecto, este número es 20, aunque se puede cambiar, como veremos más adelante.

Manejando los Scripts

Lo primero es crear el script. Es necesario que exista antes de incluirlo para su ejecución en el arranque. Si echamos un ojo a los directorios rcX.d, veremos que la gran mayoría de los scripts están en /etc/init.d, así que es de suponer que ese es un buen lugar para colocar el nuestro (de hecho, no puede estar en otro sitio)

Añadir un script

El comando que vamos a utilizar es update-rc.d. Para añadir un script de inicio, lo haremos de la siguiente forma:
# update-rc.d miscript.sh defaults
Con esto incluimos miscript.sh para que se ejecute en el arranque (en los niveles 2, 3, 4 y 5), y en la parada (niveles 0, 1 y 6). Es equivalente a escribir:
# update-rc.d miscript.sh start 20 2 3 4 5 . stop 0 1 6 .
(nótese el punto al final) Supongamos ahora que queremos incluir nuestro script sólo en el inicio, con orden de ejecución 95, y sólo en los niveles 2 y 3:
# update-rc.d miscript.sh start 95 2 3 .
(nótese el punto al final)

Borrar un script

Para borrar un script haríamos:
# update-rc.d miscript.sh remove
Esto borra únicamente los enlaces simbólicos, no el script; y siempre y cuando se haya borrado el script previamente. Si se quiere borrar los enlaces aunque no se haya borrado el script, hay que utilizar la opción -f (force):
# update-rc.d -f miscript.sh remove
Para evitar liarla parda, tanto en la adición como en el borrado, es útil utilizar la opción -n (not really). Esto hace que no haga realmente las operaciones, si no que solamente nos diga qué habría hecho.
# update-rc.d -n miscript.sh defaults
Adding system startup for /etc/init.d/miscript.sh ...
   /etc/rc0.d/K20miscript.sh -> ../init.d/miscript.sh
   /etc/rc1.d/K20miscript.sh -> ../init.d/miscript.sh
   /etc/rc6.d/K20miscript.sh -> ../init.d/miscript.sh
   /etc/rc2.d/S20miscript.sh -> ../init.d/miscript.sh
   /etc/rc3.d/S20miscript.sh -> ../init.d/miscript.sh
   /etc/rc4.d/S20miscript.sh -> ../init.d/miscript.sh
   /etc/rc5.d/S20miscript.sh -> ../init.d/miscript.sh


blog comments powered by Disqus