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

Необходимо поставить программу на длительное выполнение, но если при этом случайно закрыть терминал, в котором она запущена, то программа завершится, чего допускать не хотелось бы. Соединяюсь с сервером по SSH. Связь иногда прерывается. Как сделать так, чтобы на сервере все продолжало работать как ни в чем не бывало? Ответ: 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)).

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

Хорошая штука. надо будет в .bashrc прописать.
  • 0

Нет комментариев