Запустить скрипт оболочки внутри tmux

Запустить скрипт оболочки внутри tmux

Почему после запуска tmux на удаленном сервере через ssh программа работает, но после отключения сеансов возвращает 404?

Это программа на Go(golang), http-сервер, прослушивающий порт за обратным прокси-сервером nginx.

Первые данные: все работает нормально, вот так:

1 - Я подключаюсь к серверу с помощью ssh user@server-ip,

2 - бег tmux,

3 - запустить этот скрипт внутри tmuxсеанса, выполнив . 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 - отсоединить сеанс tmux с помощьюCtrl-bа потомг.

Пока все хорошо! Все отлично работает в браузере по адресу, http://www.myapi-consumer.comи терминал ssh все еще открыт; но

5 - когда я отключаю сеанс ssh (поCtrl+a и d), программа перестает работать правильно и возвращает 404 (она же и отправляет 404).

6 - Теперь, когда я снова подключаюсь к удаленному серверу, ssh user@server-ipон работает так, как и ожидалось, и я тестирую «рабочую» часть на другом соединении - на моем мобильном телефоне с другим подключением к Интернету.

Что происходит?

решение1

Проблема в том, что приложение обслуживает файлы, находящиеся в домашнем каталоге, который отключается при отключении.

У меня есть ответ от группы golang-nutsздесь.

решение2

Вот как я это понимаю.

Вы говорите, что выходите из сеанса или закрываете текущий сеанс терминала. Программа запущена, и вы только что закрыли свой терминал, она больше не будет работать.

Но вы используете tmuxи все tmuxдля того, чтобы запускать программы в фоновом режиме.

Попробуйте запустить программу, поместив ее из фонового режима. Я имею в виду

nohup myscript.sh &

nohupзапустить ваш скрипт, даже если вы вышли из системы, &[and]перевести ваш скрипт в фоновый режим.

Надеюсь, это вам поможет.

Связанный контент