[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: solicito ayuda



Hola,

Me imagino que en cualquier libro sobre redes de Linux...yo francamente
no me acuerdo donde lo aprendi, fue hace varios a#os.

La idea es esta. inetd fue creado precisamente porque es bastante rollo
hacer un servidor de red, ademas de para ahorrar recursos en la maquina
(tienes un solo programa corriendo que esta escuchando a todos los
sockets, en vez de varios demonios).

Con un demonio tradicional, tienes que:

1. Programar todo lo del Socket
2. Si quieres servir a varios clientes, hacer multithreading o fork()ear
3. Tener alguna forma de detectar si el demonio se cae y reiniciarlo en
dado caso
4. (alguna otra idea?)

En el caso de inetd, lo unico que haces es que tu programa lea de stdin
y escriba a stdout. inetd se encarga de todo lo anterior solito. Claro
que algunas cosas se dificultan (como por ejemplo, averiguar la
direccion IP del cliente) pero por lo general estas cosas no son tan
problematicas como el rollo de un demonio.

La desventaja principal de usar inetd, es que cada vez que se hace una
conexion, se levanta un nuevo proceso. En un servidor que este muy
ocupado, es mucho mas eficiente usar multithreading. Tambien, en algunos
casos (por ejemplo sshd, el demonio del Secure Shell) el tiempo de
arranque del demonio puede ser largo (sshd tiene que generar llaves cada
vez que arranca) por lo que puede no ser tan eficiente.

Como decia antes, muchos programas pueden arrancarse de ambas formas, ya
sea con un switch de linea de comando para indicar que estan arrancando
por inetd (o al reves, que estan arrancando como demonio) o por una
opcion de configuracion. Ejemplos de esto son el antedicho sshd y el
httpd de Apache.

En fin, espero que esto te ayude.
Saludos,
-Mario.

Luis Manuel Lepe Vizcaíno wrote:
> 
> A ver.. esto no me lo sabía.. ¿donde encuentro información al respecto?
> porque me gustaría poder saber bien la diferencia para poder programarlos..
> Gracias
> 
> > -----Original Message-----
> > From: Mario Camou [SMTP:mcamou en null net]
> > Sent: Thursday, July 01, 1999 1:34 AM
> > To:   Cristian Othon Martinez Vera
> > Cc:   Isidro Miranda Aquino 24/05; linux-admin en nuclecu unam mx
> > Subject:      Re: solicito ayuda
> >
> > Cristian Othon Martinez Vera wrote:
> > >
> > > On Tue, 29 Jun 1999, Isidro Miranda Aquino 24/05 wrote:
> > >
> > > > hola a todos
> > > >
> > > > tengo un prblema con linux soy un estudiante de sistemas
> > computacionales
> > > > y necesito instalar un demonio en una maquina es para un proyecto que
> > > > necesito entregar el programa por sissolo si funciona pero al tratar
> > de
> > > > ponerlo como un demonio no lo inicializa ya modifique los archivos del
> > > > inetd.conf y el services las lineas que pusimos son las siguientes
> > > >
> > > >
> > > > inetd.conf
> > > > ara stream tcp nowait  root /root servii
> > > >
> > > >
> > > > services
> > > > ara                 9999/tcp
> > >
> > >  Probaste antes correr tu programa en background? (servii &) Como estas
> > > usando un puerto no privilegiado, si lo ejecutas en background, deberia
> > de
> > > funcionar.
> > >
> > >  Cuando veas que de verdad funciona, integralo a inetd.conf
> > >
> > > ara     stream  tcp     nowait  root    /root/servii
> > >
> > >                                         Saludos
> >
> > No, acuérdate que la diferencia entre un demonio normal y uno que corre
> > por inetd, es que el demonio normal tiene que abrir y cerrar sus propios
> > Sockets, mientras que si corre por inetd, éste se encarga de manejar los
> > sockets y sólo le pasa al programa la conexión al socket por medio de
> > standard input y standard output. Si corres un programa de inetd en
> > background no va a pasar nada. Por eso Apache y otros que pueden correr
> > tanto por inetd como como demonios tienen que tener alguna opcion de
> > linea de comando (p.ej., "sshd -i") o en el archivo de configuracion,
> > que les diga si estan corriendo por inetd.
> >
> > Tu demonio esta programado para inetd? Creo que tu linea de inetd.conf
> > esta mal, donde dice "/root" tienes que poner el path completo del
> > ejecutable (a menos que esté en /usr/sbin) y luego repetirlo porque eso
> > es lo que le va a pasar inetd al programa en la linea de comando
> > (acuerdate que en C el argv[0] es el nombre del programa). Asi, tu linea
> > quedaria (asumiendo que tu demonio este en /usr/local/sbin/servii):
> >
> > ara stream tcp nowait  root   /usr/local/sbin/servii   servii
> >
> > Espero que esto te sea util,
> > -Mario.



[Hilos de Discusión] [Fecha] [Tema] [Autor]