星 «Звезда» 1999

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