Ejecute Shell Script dentro de tmux

Ejecute Shell Script dentro de tmux

¿Por qué después de ejecutar tmux en un servidor remoto a través de ssh, el programa funciona? pero después de desconectar sesiones, ¿devuelve 404?

Este es un programa Go (golang), un servidor http que escucha en un puerto, detrás de un proxy inverso nginx.

Primer dato: todo funciona bien así:

1 - Me conecto al servidor usando ssh user@server-ip,

2 - correr tmux,

3 - ejecute este script dentro de tmuxla sesión, de la siguiente manera . my-script.sh:

#!/bin/sh

go build -v

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>/tmp/myapi.log 2>&1

export API_COUCHDB_ADMIN='admin'
export API_COUCHDB_PASSWORD='************'
export API_COUCHDB_URL='http://172.17.0.2:5984/'
# [some other env variables ...]
./myapi

4 - desconectar la sesión tmux porCtrl-by luegod.

¡Hasta ahora, todo bien! Todo funciona bien dentro de un navegador en la dirección http://www.myapi-consumer.comy la terminal ssh todavía está abierta; pero

5 - cuando desconecto la sesión ssh (porCtrl+a y d), el programa ya no funciona correctamente y devuelve 404 (es el que envía 404).

6 - Ahora, cuando me vuelvo a conectar al servidor remoto, ssh user@server-ipfunciona como se esperaba y estoy probando la parte de "funcionamiento" en otra conexión, en mi teléfono celular con otra conexión a Internet.

¿Lo que está sucediendo?

Respuesta1

El problema es que la aplicación sirve archivos que residen dentro del directorio de inicio, que se desmonta al desconectarse.

Tengo la respuesta del grupo golang-nuts.aquí.

Respuesta2

Así lo estoy entendiendo.

Está diciendo que está saliendo de la sesión o cerrando la sesión actual del terminal. Un programa ejecutándose y acabas de cerrar tu terminal, ya no se ejecutará.

Pero lo estás usando tmuxy eso es todo tmux, para ejecutar los programas en segundo plano.

Intente ejecutar el programa colocándolo desde segundo plano. Quiero decir

nohup myscript.sh &

nohuppara ejecutar su secuencia de comandos incluso si cierra la sesión, &[and]para colocar su secuencia de comandos en segundo plano.

Espero que te ayude.

información relacionada