miércoles 20 de mayo de 2009

ejecutar un script en el arranque de linux

Si lo que deseamos es iniciar un script o programa al arranque del sistema, sin tener que iniciar la sesion, entonces para eso explico lo siguiente.

Primero debes comprender que al arrancar el sistema entras en un nivel de ejecución o Runlevel.

Para saber que runlevel te encuentras puedes escribir en una Terminal.

#runlevel

sin embargo normalmente ubuntu (como hijo de Debian) corre en el runlevel 2 por defecto.

Esto quiere decir, que si entras en /etc/rc2.d/ encontraras alli una lista de todos los scripts que se ejecutan al arrancar el sistema. Si nos fijamos bien todos son enlaces simbolicos a archivos que se encuentran en /etc/init.d/ que es donde están todos los daemon es decir, todo lo que funciona independientemente y sin emitir a la Terminal un mensaje para el usuario.

De modo que para ejecutar un script o programa al arranque del sistema, primero es necesario darle caracteristicas de daemon y posteriormente crees un enlace simbolico de este daemon en la carpeta /etc/rc2.d/ de la siguiente forma:

1) Darle permiso de ejecucion al script, en la Terminal y en la carpeta donde esta el script escribimos:

#sudo chmod -x nombrescript

Usamos el comando sudo si no somos root para ejecutar comandos con permisos de root

2) Copiarlo a la carpeta /etc/init.d/

#sudo cp /etc/init.d/nombrescript

3) Lo hacemos daemon, es decir que se ejecute al incio de la sesion

#sudo update-rc.d nombrescript

4) Nos cambiamos al directorio /etc/rc2.d/

cd /etc/rc2.d/

5) Listamos todo lo que hay en el directorio, observa que todos los archivos comienzan con una S (start) mayuscula y seguidos de un numero entre el 00 y el 99. Estos numeros determinan el orden en que se ejecutan cada uno de los proceso en este archivo. Elije un numero (##) que no exista, de preferencia de los ultimos ya que lo utilizaremos en el siguiente paso.

#ls

6) Y hacemos un enlace simbolico del script en la carpeta /etc/rc2.d/

#sudo ln -s /etc/init.d/nombrescript /etc/rc2.d/S##nombrescript

Con eso hemos logrado que nuestro script o programa se ejecute al encender la PC.

Como ejemplo mas practico veamos el caso del daemon de ddclient, en ESTA entrada explico como instalar ddclient en modo daemon, porterior a eso solo nos queda hacer


#sudo ln -s /etc/init.d/ddclient /etc/rc2.d/90ddclient

y listo el ddclient se ejecutara al encender nuestra PC.

2 comentarios:

Anónimo dijo...

Esta muy bacano.. Muchas Gracias!!

Minrock dijo...

Excelente tu explicación gracias por todo. Saludos desde Colombia.

Minrock X.