Crear servicios en Linux

Posted on

En Linux los servicios habituales que en sistemas operativos Windows se denominan servicios se denominan demonios.

“Un demoniodaemon o dæmon (de sus siglas en inglés Disk And Execution MONitor), es un tipo especial de proceso informático no interactivo, es decir, que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario. Este tipo de programas se ejecutan de forma continua (infinita), vale decir, que aunque se intente cerrar o matar el proceso, este continuará en ejecución o se reiniciará automáticamente. Todo esto sin intervención de terceros y sin dependencia de consola alguna.” (Wikipedia)

Para crear nuestro propio servicio en Linux debemos hacer un script en /etc/init.d, darle permisos de ejecución (755 o de lectura-escritura-ejecución) y asociarlo a los runlevels que queramos. El script debe seguir unas pautas necesarias o no funcionará.

El comienzo de este script debe tener una estructura parecida a la siguiente:

dibujo

El template anterior es bien simple, pero se pueden agregar mas cosas y hacer mas complejo, como que guarde un log, guardar el PID del proceso y matarlo con este, agregar un parámetro status para chequear si el demonio esta levantado o no, etc.

ARRANQUE AUTOMÁTICO

Para que el demonio inicie y pare automáticamente cuando iniciamos y apagamos el sistema respectivamente debemos asignar los runlevels.

Que son los runlevels

El término runlevel o nivel de ejecución se refiere al modo de operación en los sistemas operativos que implementan el estilo de sistema de arranque de iniciación tipo UNIX System V.

En términos prácticos, cuando el computador entra al runlevel 0, está apagado, y cuando entra al runlevel 6, se reinicia. Los runlevels intermedios (1 a 5) difieren en relación a qué unidades de disco se montan, y qué servicios de red son iniciados. Los niveles más bajos se utilizan para el mantenimiento o la recuperación de emergencia, ya que por lo general no ofrecen ningún servicio de red. Los detalles particulares de configuración del runlevel varía bastante entre sistemas operativos, y ligeramente entre los administradores de sistema.(Wikipedia)

dibujo

Asignar runlevels

Antes que nada debemos copiar nuestro script(miScript) a /etc/init.d/ que es donde estan los scripts de los demonios:

$ sudo cp miScript /etc/init.d/

Darles los permisos necesarios para el owner, group y ejecución:

$ sudo chmod ug+x /etc/init.d/miScript

Para asignar los runlevels tenemos dos formas:

1) Manualmente

Lo que se hace es crear enlaces simbólicos de nuestro script en los directorios de los runlevels para los demonios. Estos directorios estan en /etc/rcX.d/ donde la X es un número que corresponde al runlevel. Ejemplo /etc/rc3.d/. Habría que crear enlaces simbólicos para todos los runlevels.

Ejemplo: $ ls -l /etc/rc6.d/

Como se puede ver son todos enlaces simbólicos de scripts pero renombrados con la siguiente nomenclatura:

S[prioridad][nombre script]
K[prioridad][nombre script]

Donde la S significa el start de demonio y la K el kill. La prioridad es un numero de 00 a 99 para decir en que orden se van a ejecutar(puede haber demonios con la misma prioridad). Y por ultimo el nombre del script.

Ahora para crear los enlaces simbólicos debemos hacerlo en los runlevels adecuados. Para iniciar en el runlevel 5 (multiusuario gráfico) y 3 (multiusuario) y para pararlo en el runlevel 6 (reinicio) y 0 (apagado). Lo hacemos con el comando ln de la siguiente manera:

$ ln -s /etc/init.d/miscript /etc/rc5.d/S30miScript
$ ln -s /etc/init.d/miscript /etc/rc3.d/S30miScript
$ ln -s /etc/init.d/miscript /etc/rc6.d/K05miScript
$ ln -s /etc/init.d/miscript /etc/rc0.d/K05miScript

Con esto alcanzaría para para levantar de modo automático el demonio.

2) Asignación de runlevels automáticamente

Con el siguiente comando nos ahorramos todo lo del primer paso con la diferencia de que las prioridades se asignan automáticamente:

$ sudo update-rc.d jboss defaults

Si vemos en la ayuda del update-rc.d vemos que tenemos también la posibilidad de especificarle la prioridad.

Con esto ya tenemos nuestro demonio y si queremos lo podemos iniciar con start.

(Fuente: Aquí)

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s