Comparte
Ver el tema anteriorIr abajoVer el tema siguiente
avatar
grupoed2k
colaborador
colaborador
0 / 1000 / 100


Cantidad de envíos : 291
Edad : 37
Perfil : Patience, my friend, is a virtue...

Una cita de Georges Orwell:

Libertad de expresión es el derecho a decir

lo que nadie quere escuchar.

... .... .... .... .... ...
Tú firma Personal :
Barra de Respeto :
0 / 1000 / 100

Reputación : 45
Fecha de inscripción : 14/10/2008
http://grupoed2kmagazine.activoforo.com

default Demonios

el 17/10/2008, 2:54 am



Demonios

Los daemons(o demonios) no son más que un proceso que se ejecuta en segundo plano.
Estos demonios ejecutan diferentes funciones y proporcionan ciertos servicios,

pero sin la interacción del usuario; son procesos de los que no "notamos" su ejecución.

Los demonios pueden ser iniciados al arrancar el sistema,
al entrar en un runlevel (nivel de ejecución) determinado,
o simplemente cuando nosotros los iniciemos.

Veremos entonces de qué modo podemos controlar nosotros mismos los demonios (iniciarlos, pararlos, etc)
y cómo podemos hacer que se inicien automáticamente.

Iniciando y parando los demonios o daemons

Los programas que ejecutamos como demonios pueden estar
ubicados en cualquier parte del disco,

pero tienen un punto en común:

todos utilizan un script para ser iniciados/parados,
y estos scripts se encuentran en el directorio:

/etc/init.d/

Sabiendo esto, la sintaxis habitual para iniciar/parar demonios es:

/etc/init.d/<nombre_demonio> start (para iniciar el demonio)
/etc/init.d/<nombre_demonio> stop (para detenerlo)

Ejemplos

Imaginemos que en nuestro directorio /etc/init.d tenemos los siguientes scripts:

# ls -l /etc/init.d/
-rwxr-xr-x 1 root root 1.4k oct 26 2002 httpd
-rwxr-xr-x 1 root root 1.0k ene 18 2002 iptables
-rwxr-xr-x 1 root root 1.9k ene 25 2002 ppp
-rwxr-xr-x 1 root root 2.2k oct 5 2001 rc
-rwxr-xr-x 1 root root 4.0k abr 8 2002 sshd

Por ejemplo, si quisieramos iniciar/parar/reiniciar el servidor web, podríamos hacer lo siguiente:

# /etc/init.d/httpd start
# /etc/init.d/httpd stop
# /etc/init.d/httpd restart

Y esto es válido para todos los scripts que encontremos en ese directorio.

En GNU/Linux es así de sencillo iniciar y parar demonios.

Nuestros scripts

Pero aparte de los demonios del sistema y los demonios de determinadas aplicaciones,
nosotros también podemos crear nuestros scripts
para iniciar/parar/reiniciar los programas que nosotros queramos poner como demonios.

Únicamente hemos de crear un script que siga la siguiente sintaxis:

#!/bin/sh
case "$1" in

start)

# código para iniciar el demonio/programa

;;
stop)

# código para parar el demonio/programa

;;
restart)

# código para reiniciar el demonio/programa

;;

esac

Esto nos dice que cuando ejecutemos el script y le pasemos el parámetro start,

nos iniciará el demonio,

cuando le pasemos el parámetro stop lo detendrá,
y cuando le pasemos el parámetro restart lo reiniciará.

Normalmente sólo root tiene permisos para iniciar/parar los servicios,
pero todo depende de los permisos que se le hayan puesto al script.

Iniciando demonios automáticamente

Ahora que ya sabemos como iniciar y parar los demonios,
vamos a explicar como hacer que se inicien o paren automáticamente.

En GNU/Linux podemos definir qué demonios se inician
y se detienen al entrar en cada runlevel (o nivel de ejecución).

Runlevels (o niveles de ejecución)

Tenemos varios niveles de ejecución,
y cada uno de ellos nos proporciona unas funcionalidades diferentes,
y un entorno de trabajo distinto.

La definción de cada runlevel la encontramos en el fichero /etc/inittab y suele ser la siguiente:

0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)

Para saber en que nivel de ejecución estamos actualmente podemos utilizar el comando runlevel

Directorios de los enlaces

Para iniciar o parar un demonio al entrar en un runlevel
simplemente tenemos que crear un enlace simbólico
en el directorio correspondiente al runlevel
en el que queremos iniciar/parar el demonio.

Los directorios con los enlaces a los scripts de los demonios son los siguientes:

/etc/rcX.d/

donde X se corresponde con el número de runlevel.

Así, por ejemplo, en el directorio /etc/rc5.d/
tenemos los enlaces a los scripts de los demonios
que se iniciaran/pararan al entrar en el runlevel 5.

Sintaxis de los enlaces

Ahora que ya sabemos donde hemos de colocar nuestros enlaces
ya podemos crearlos.
Es muy importante el nombre que le damos a los enlaces
ya que de él depende si el demonio se inicia o se para
y el orden en que se inicia/para.
La sintaxis que se sigue en el nombre del enlace es la siguiente:

S<num><nombre demonio> (para iniciar el demonio apuntado por el enlace)
K<num><nombre demonio> (para parar el demonio apuntado por el enlace)

<num> es el orden en que se ejecutará;
puede ir desde 00 hasta 99

(siendo 00 la máxima prioridad).

Además puede haber varios con la misma prioridad.

Veamos unos ejemplos para aclararlo:

# cd /etc/rc5.d/
# ls -l
lrwxrwxrwx 1 root root 13 ene 8 00:45 K20ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root 18 ene 7 23:49 S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx 1 root root 14 ene 7 23:49 S89cron -> ../init.d/cron
lrwxrwxrwx 1 root root 16 ene 8 01:34 S91apache -> ../init.d/apache

En este ejemplo vemos que al entrar en el runlevel 5
se termina el demonio de ssh,
y luego se arrancarn los demonios de sysklogd,
cron y apache en este orden,
respondiendo a la prioridad indicada en el nombre del enlace.

Ejemplo resumen

Todo esto puede parecer un poco confuso,
pero vamos a ver un ejemplo práctico para poner nosotros
nuestro demonio.

Imaginemos que tenemos un programa que queremos
que se ejecute siempre que arranque el sistema
y se quede en ejecución como demonio.

Haríamos lo siguiente:

1. Crearnos un script segun al sintaxis explicada anteriormente que nos permita iniciar y parar el programa que queremos ejecutar.
Lo llamaremos, por ejemplo, miscript.

2. Nos logueamos como root,
copiamos el script a /etc/init.d
y le damos permiso de ejecución:

$ su
# cp miscript /etc/init.d/
# chmod u+x /etc/init.d/miscript

3. Creamos los enlaces en los runlevels adecuados:
haremos que se inicie en el runlevel 5 (X11)
y en el runlevel 3 (multiusuario sin X)
y que se detenga en los runlevels 6 y 0
(reiniciar y apagar):

# ln -s /etc/init.d/miscript /etc/rc5.d/S99miscript
# ln -s /etc/init.d/miscript /etc/rc3.d/S99miscript
# ln -s /etc/init.d/miscript /etc/rc6.d/K01miscript
# ln -s /etc/init.d/miscript /etc/rc0.d/K01miscript

Lo iniciamos con la mínima prioridad
para dejar que se inicien antes los demonios más importantes,
y lo paramos con la máxima,
para que se detenga antes que los demonios más importantes.

Con esto hemos conseguido que nuestro programa se inicie
al arrancar la máquina
(ya que normalmente arranca en el runlevel 5 si tenemos instaladas las X o en el 3 encaso contrario)
y que se detenga al apagarla o reiniciar.

Realmente los enlaces para detener el demonio al apagar o reiniciar la máquina no son necesarios,
ya que el demonio se terminará igualmente,
pero siempre es mejor que termine en el orden adecuado.

Apunte final

Podemos cambiar el runlevel por defecto
(el runlevel en el que quedamos una vez inicada la máquina)
modificando en el fichero /etc/inittab la siguiente línea:

id:5:initdefault:

El segundo campo corresponde al runlevel por defecto.
En este caso es el 5 (iniciamos con X)
pero podemos cambiarlo (por ejemplo a 3 si no queremos que se inicien las X automáticamente).


Tutorial elaborado por Nacx para ADSLAyuda.com

http://www.adslayuda.com/Linux-demonios.html

_________________
________________



_________________________________________________________________________________


Ver el tema anteriorVolver arribaVer el tema siguiente
Permisos de este foro:
No puedes responder a temas en este foro.