Linux - Aplicacion en servidor ubuntu

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Linux (en relación al último mes)
Gráfica de Linux

Aplicacion en servidor ubuntu

Publicado por Juan (4 intervenciones) el 07/01/2020 18:00:28
Hola muy buenas feliz año!

Soy nuevo con los servidores. Les cuento un poco.

He creado una aplicación que no es una página web, si no una aplicación que se ejecuta y abre un puerto para comunicación por medio de socket. y según el mensaje recibido realiza una determinada acción en la base de datos. la aplicación funciona bien, me conecto desde un dispositivo externo y va bien, y si me conecto desde mi pc lo mismo, funciona bien. mi problema era que cuando cerraba la terminal desde donde ejecute la aplicación, mi aplicación se cerraba.

Por lo que necesitaba ejecutarla de otra manera, conseguí un comando para cerrar la terminal sin cerrar la aplicacion y todo bien. pero qué sucede si había un problema y se cerraba la aplicación por un error que no capture?
Por lo que necesitaba hacer algo que si la aplicación se cerraba se volviera a abrir. ya que dispositivos dependen de ella, y no puedo dejarla sin funcionamiento.

investigando un poco lo he solucionado creando una instrucción con crontab que cada minuto intenta abrir la aplicación, si no está abierta la abre, y si ya está abierta, como el puerto está en uso no puede iniciarse. con esto me funciona, he mandado comandos para cerrar la aplicación y deja de funcionar con un máximo de 1 min, que es cuando se vuelva a ejecutar la instrucción del crontab. por lo tanto mi problema ya esta solucionado.

Pero tengo una duda, es esta la manera más eficiente de hacer que mi aplicacion se mantenga activa? porque al intentar abrir constantemente cada 1 minuto la aplicación, no se si sea esto muy eficiente (lo dijo porque no inicia por un error de puerto ocupado). y mi pregunta seria esa, hay alguna otra manera de hacerlo? o no pasa nada que lo tenga asi?

Sería más eficiente crean un script que pregunte si ese puerto está abierto? y si lo está quiere decir que la aplicación está funcionando, y si está cerrado inicie la aplicación porque quiere decir que no se está ejecutando? esto seria mas conveniente?

o para realizar esto que quiero hacer existe alguna herramienta?

Si alguien me puede asesorar un poco se lo agradeceria, ya que si me funciona, pero dudo que lo esté haciendo bien. y no consigo mucha información por internet respecto a esto. Consigo información sobre tomcat y nginx para servicios web, pero al no ser una web, no se como hacerlo. tampoco se si se pueden usar estos programas para lo que yo quiero, que creo que no.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Aplicacion en servidor ubuntu

Publicado por Tom (482 intervenciones) el 07/01/2020 18:15:36
Yo creo que hay bastantes maneras, la del crontab tiene la ventaja de que no necesitas cambiar nada en tu aplicación.
También puedes hacer un "launcher": otro ejecutable que haga fork() y exec() a tu aplicación, y se quede esperando con waitpid() o así, de modo que al caerse tu aplic. el proceso "padre" pueda levantarla de nuevo.
Y más formas, pero la solución más económica sería simplemente lanzar tu aplicación en un bucle, algo así como:

while true
do
mi_aplicacion
done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 302
Oro
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Aplicacion en servidor ubuntu

Publicado por joel (116 intervenciones) el 07/01/2020 20:05:25
Hola Juan, yo creo que lo mejor es dar con el problema que te cierra la aplicación... si generar un buen sistema de logs, no tienes porque tardar en darte cuenta de donde esta el problema.
Otra manera, es dejar la aplicación abierta en la consola, el momento que falle, podrás visualizar el mensaje de error.

El sistema que estas utilizando en el cron, es un sistema muy utilizado!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en Linux (en relación al último mes)
Gráfica de Linux

Aplicacion en servidor ubuntu

Publicado por Juan (4 intervenciones) el 08/01/2020 09:25:31
Buenos días. gracias a los dos por responder.

Si, evidentemente el problema que surga habrá que arreglarlo. y mi idea es arreglar los problemas. de momento funciona la aplicación y no da problemas. esto que hago es por si en un futuro pasa algo que no me habia pasado antes y que no está solucionado. Que la aplicación vuelva a iniciar y siga funcionando, hasta que lo arregle. si falla un viernes a las 23:00 de la noche tendría que arreglar el problema a las 23:00 y a ninguno le gustaría trabajar a esa hora jeje. con lo que quiero hacer si falla a las 23:00 vuelve a iniciar y todo sigue funcionando, y al dia siguiente puedo arreglar el error con calma sin que se vea muy afectados los clientes. mi intención no es evitar arreglar los errores, mi intención es que siga funcionando aunque haya un error y pueda repararlo con calma y no con 35 llamadas de clientes jejeje.

Muchas gracias por sus respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar