Назад | Перейти на главную страницу

Закрытие сеанса SSH, пока сеанс virtualenv остается открытым (я думаю)

Недавно я разрабатывал несколько сайтов с использованием Flask (работает на debian в virtualenv), и когда я тестирую, я могу запустить его на порту, скажем, post 5000.

Итак, я запускаю сценарий так:

. env/bin/activate           <- go into virtual environment
python file.py               <- run python script

И мне передадут это сообщение:

Running on http://0.0.0.0:5000/

Так что все это отлично работает, и я могу получить доступ к своему сайту через этот порт. Однако ... мой мусорный интернет-провайдер всегда делает это, сбрасывая что-то около часа ночи каждое утро. Я понятия не имею, что это, все работает как обычно, но я всегда отключаюсь от любых открытых сеансов SSH. Это оставляет его работающим, и все, что я могу сделать, это позвонить:

lsof -i

Это покажет мне процесс, но если я убью его, а затем перезапущу, все станет странно. В:

Running on http://0.0.0.0:5000

сообщение все еще отображается, но я больше не могу к нему подключиться. Я пробовал изменить номер порта, и, похоже, единственное, что работает, - это повторить попытку позже или в другой день. Теперь я предполагаю, что что-то на моем сервере сбрасывается в промежутке между этими временами, и я хотел бы думать, что, возможно, время ожидания сеанса virtualenv истекло, но я не могу узнать, как это сделать вручную, кто-нибудь знает?

Я не уверен, что там происходит, но если у вас нестабильное соединение ssh, используйте tmux.

tmux

Он откроет сеанс терминала, который находится внутри контейнера, к которому вы можете подключиться позже. Все, что работает внутри этого виртуального терминала, будет продолжать работать, если сеанс отключится. Итак, после того, как вас выгнали, снова зайдите по ssh и запустите

tmux attach

тогда вы продолжите с того места, где остановились.

Есть еще одна, более старая программа, которая делает это, также называемое «экраном», но, хотя ее можно найти чаще, она не поддерживается активно.