Wiki

Clone wiki

comp-house.repo / screen-terminal-unlimited

screen - терминал без перерыва.

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

Соединяюсь с сервером по SSH. Связь иногда прерывается. Как сделать так, чтобы на сервере все продолжало работать как ни в чем не бывало?

Решение

Запустить сессию screen и работатьв в ней.

Screen, это утилита, которая создает виртуальные консоли и позволяет пользователю по мере необходимости к ним подключаться.

Чтобы стартовать виртуальную консоль, достаточно набрать:

$screen

В рамках одной сессии screen можно создать несколько консолейкомбинацией ctrl-a-c

Переключиться между консолями в рамках одной сессии screen можно комбинациями ctrl-a-p (пред. консоль) ctrl-a-n (след. консоль)

Выход и завершение консоли, как обычно, командой exit.

Если во время работы произошел обрыв связи или терминал был закрыт, то восстановив связь или зайдя заново в терминал, можно посмотреть список имен свободных сессий:

$ screen -ls
There is a screen on:
        5345.pts-1.vaio (Detached)
1 Socket in /var/run/screen/S-avl.

и подключиться к нужной сессии:

$screen -r  5345.pts-1.vaio

где 5345.pts-1.vaio это имя сессии, подсмотренное в выводе предыдущей команды (5345.pts-1.vaio (Detached)) .

При этом программы, которые были запущены в сессии, вообще ничего не заметят, а пользователь увидит текущее содержимое экрана, как будто он и не отключался.

Updated