screen - менеджер экран в Linux. Он позволяет создать виртуальный экран консоли, который может выполнять длительные процессы в консоли без постоянного подключения к серверу. Т.е. можно запустить процесс в этом виртуальном экране, отключиться от сервера и через некоторое время проверить выполнение процесса, подключившись к серверу и открыв виртуальный экран.
Это очень полезно при выполнении долгих bash-скриптов: различных синхронизациях сайтов, скачивании файлов, разворачивании дампов огромных баз данных и т.п. Не нужно бояться, что, запустив многочасовой процесс в терминале, вы вернетесь через час и увидете, что соединение было прервано. За несколько часов даже при стабильном соединении с Интернет могут быть секундные разрывы, неговоря уже об нестабильной сети в офисах.
Также это может быть полезно, если вы запустили процесс на одном компьютере, а хотите проконтролировать уже на другом.
Установка
CentOS:
yum install screen
Debian:
apt-get install screen
Команды в CentOS и Debian могут отличаться, сочетания клавиш ниже приведены для CentOS 6.9
Создание и переименование экрана
Чтобы создать новый экран, вводим:
screen
Это виртуальный экран той же консоли, здесь доступны все те же операции. Чтобы отключиться от экрана, нажимаем [Ctrl]+[a]+[d]
(регистр не важен) и попадаем в обычную консоль. При этом экран работает; если там запущен тот же top, то при возвращении он так и будет работать.
Полный список команд экрана можно получить нажав [Ctrl]+[a]+[?]
.
Для возврата в экран нужно знать имя сокета. Все работающие экраны можно получить командой:
screen -ls
Результат будет примерно такой:
There are screens on:
8525.pts-0.dedic1234 (Detached)
9709.pts-0.dedic1234 (Detached)
2 Sockets in /var/run/screen/S-testserver.
Имя сокета выглядит как <pid>.<tty>.<host>
. Для более понятного имени можно создавать новый экран командой:
screen -S yourtitle
В этом случае имя экрана будет выглядеть как <pid>.yourtitle
Открытый экран можно переименовать, выполнив следующие действия:
- нажимаем
[Ctrl]+[a]+[:]
(двоеточие) - вводим sessionname yourtitle
- Enter
Подключение к экрану и уничтожение
Для возврата в экран нужно выполнить команду:
screen -R pid.yourtitle
или
screen -r pid
или
screen -r yourtitle
Чтобы отключиться от экрана и уничтожить его, вводим при открытом экране [Ctrl]+[a]+[k], [y]
.
Чтобы уничтожить закрытый экран, посылаем в него команду kill, вводим:
screen -r yourtitle -X kill