2 d’ag. 2009

Ejecutar un script al inicio de ubuntu

En Ubuntu existen muchos procesos que se ejecutan en modo daemon al iniciar la sesión, de hecho si queremos ejecutar algún programa al inicio de la sesión es algo muy simple solo hay que ir a Preferencias > Sesiones > Aplicaciones al inicio y Añadir un programa, con eso es suficiente.

Pero que pasa si lo que deseamos es iniciar un script o programa al arranque del sistema, sin tener que iniciar la sesión, para ello debes realizar los siguientes pasos.

Primero debes comprender que al arrancar el sistema entras en un nivel de ejecución o Runlevel. Para saber con que runlevel trabaja Ubuntu, desde un Terminal digita:

$ runlevel

Normalmente Ubuntu corre en el runlevel 2 por defecto.

Esto quiere decir, que si entras en /etc/rc2.d/ encontraras allí una lista de todos los scripts que se ejecutan al arrancar el sistema. Si nos fijamos bien todos son enlaces simbólicos 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 en la Consola un mensaje para el usuario.

De modo que para ejecutar un script o programa al arranque del sistema, primero es necesario darle características 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 ejecución al script, abre un Terminal y en la carpeta donde se encuentra el script digita:

$ sudo chmod +x nombredetuscript

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

$ sudo cp nombredetuscript /etc/init.d

3) Lo hacemos daemon, es decir que se ejecute al inicio de la sesión

$ sudo update-rc.d nombredetuscript defaults

El resultado es el siguiente:

update-rc.d: warning: /etc/init.d/nombredetuscript missing LSB information
update-rc.d: see
Adding system startup for /etc/init.d/mydns …
/etc/rc0.d/K20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc1.d/K20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc6.d/K20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc2.d/S20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc3.d/S20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc4.d/S20nombredetuscript -> ../init.d/nombredetuscript
/etc/rc5.d/S20nombredetuscript -> ../init.d/nombredetuscript

Listo!!, con eso se agrega un script al inicio.

2 comentaris:

Anònim ha dit...

Para que funcione correctamente el script debe finalizar con '&', si es que no acaba, para devolverle el control al sistema y terminar de cargarse.

Anònim ha dit...

Muchas gracias por su articulo, me aclaro mucho el tema de los servicios al inicio de ubuntu. Felicitaciones