Ejecutar scripts al inicio de Linux

A veces es interesante que al arrancar nuestro equipo se ejecuten ciertos scripts.

Si tenemos una distro Ubuntu o basada en ella, podemos usar /etc/rc.local, es decir, meter la llamada a dicho script dentro de este fichero (antes del “exit 0”, lógicamente).

Sin embargo, desde que Ubuntu usa Upstart como sistema de arranque no tengo claro que sea una buena forma de iniciar los scripts ya que es posible que no se ejecute correctamente si depende de otros servicios, como podría ser el de red. En otras palabras, que puede que metas un script que haga algo como enviar un mail (en otro artículo veremos este caso) pero que no esté iniciado el servicio de red y no se ejecute. A mí me ha pasado.

Por eso, para estos casos recomiendo que metáis el script dentro de /etc/network/if-up.d. Los scripts que se encuentren en dicho directorio se ejecutarán sí o sí cuando el servicio de red esté operativo.

En openSUSE el directorio es /etc/sysconfig/network/if-up.d.

OJO: los scripts deben ser ejecutables (algo lógico) y no pueden tener extensión, es decir, si tenéis algo como enviar_mail.sh cambiadlo a enviar_mail (me costó un rato de “googleo” para descubrirlo).

En otro artículo veremos cómo enviar precisamente un mail desde un script (usando nuestra cuenta de gmail) para notificarnos cualquier cosa.

Yo, en particular, tengo un script que me envía un mail cada vez que enciendo el PC de casa para saber que está encendido. ¿Para qué me puede servir? Por ejemplo: para saber que el PC está ya operativo tras haberlo encendido remotamente (más info aquí) 😉

2 pensamientos en “Ejecutar scripts al inicio de Linux

  1. jEsuSdA 8)

    Yo en Debian uso /etc/init.d/bootmisc.sh para indicar los scripts personalizados.

    Según reza la documentación, bootmisc.sh se ejecutará AL FINAL de todos los scripts de arranque y, de hecho, el nombre ya da a entender que el archivo está para ubicar comandos personalizados.

    Yo lo tengo así y rula de PM. 😀

    1. admin Autor

      Pues no lo conocía. He mirado en mi opensuse y lo más parecido que hay es /etc/init.d/boot.local, que indica que es para lo mismo, aunque no lo he probado.

      De todas formas, al colocar un script en if-up.d te aseguras que arranca siempre que hagas cualquier cambio de red, no sólo en el inicio. Así, si haces un cambio en la interfaz, o cambias de interfaz (de cable a wifi o viceversa) no tienes que reiniciar el equipo para asegurarte de que los servicios queden operativos (como en windows ;-P).

      Gracias por el comentario, Jesuda.

Los comentarios están cerrados.