Esto quizás puede servirte:
<daemons>
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 qeu se inicien las X automáticamente).
</daemons>
Saludos
Maikel
juan.mej...@reduc.edu.cu escribió:
Hola. He desarrollado una aplicación web y la estoy empaquetando
para que sea fácilmente utilizada en Debian y sus derivados. Hasta
el momento, tengo un script de inicio en
/usr/share/pegotes/bin/pegotes que levanta un proceso (Java) y crea
un archivo con el PID para qu sea sencillo matarlo. Sin embargo
sería mucho más cómodo tener un daemon al que decirle algo como
"service pegotes start" o "service pegotes stop" y que se ejecutara
automáticamente al iniciar el sistema. Mis conocimientos sobre bash
y los daemons de Debian son casi nulos. Alguien me puede ayudar con
esto?
--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
--
Este mensaje le ha llegado mediante el servicio de correo electronico que
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema
Nacional de Salud. La persona que envia este correo asume el compromiso de usar
el servicio a tales fines y cumplir con las regulaciones establecidas
Infomed: http://www.sld.cu/
--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.
______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l