tmux: программа живёт без вас
В терминале: zvezda learn tmux. Урок покажет карточку и завершится; сделайте шаг и снова запустите урок - он проверит и покажет следующую.
Шаг 1 из 4
Дарья: Когда связь с сервером рвётся, вместе с окном умирает всё, что в нём запущено. Кэндзи записал: «tmux живёт на сервере, а не в твоём окне». Запустите его:
tmux
Экран очистится, внизу появится зелёная полоса - вы внутри. Там же:
zvezda learn tmuxШаг 2 из 4
Дарья: Теперь отцепитесь от сессии, не закрывая её: нажмите Ctrl+B, отпустите, потом нажмите d. Вы окажетесь в обычном окне, а сессия останется работать. Там:
zvezda learn tmux
Внимание: exit внутри tmux закрывает окно tmux вместе с программами - я так однажды ошиблась.
Шаг 3 из 4
Дарья: Самое главное - переподключение. Отключитесь от сервера:
exit
Зайдите снова (ssh, как обычно), вернитесь в сессию и проверьте:
tmux attach
zvezda learn tmux
Если в окне tmux уже работает программа (например, питомец) - новое окно: Ctrl+B, потом c.
Шаг 4 из 4 (продолжение)
Дарья: Запасной путь - nohup: программа не получит сигнал HUP, когда связь оборвётся.
nohup pet hatch &
Вывод уйдёт в файл nohup.out. Одного & мало: при обрыве shell разошлёт HUP всем своим. И ни tmux, ни nohup не спасут от вашего же Ctrl+C и от перезагрузки сервера.
Шпаргалка
tmux - новая сессия (живёт на сервере, а не в вашем окне) Ctrl+B, потом d - отцепиться: сессия и программы в ней работают дальше tmux attach - вернуться (tmux ls - список); Ctrl+B c - новое окно exit внутри tmux - закрыть окно вместе с программой (осторожно!) nohup КОМАНДА & - запасной путь, вывод в nohup.out