Использование screen в Linux

Что такое screen?

screen – это консольный оконный менеджер с поддержкой вкладок (или окон). Он имеет замечательную возможность продолжать работу с того места, где остановились в прошлый раз. В этой статье я расскажу как быстро приступить к работе.

Краткая инструкция по применению

Создать файл .screenrc в домашнем каталоге с содержимым:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#.screenrc
startup_message off # отключить страницу об авторских правах
nethack on # сообщения в стиле игры Nethack
vbell off # визуальный звонок (вспышки на экране)
msgminwait 0 # мин к-во секунд отображения сообщений
#msgwait 10 # последнее сообщение отображается 10 секунд, если нет другой активности
defscrollback 10000 # количество строк для буфера прокрутки
log off # запись журнала действий
hardstatus alwayslastline # резервирует последнюю строку для строки статуса
hardstatus string '%{= BW} %d/%m/%y %{= kG} %H %{W}[%n] %=[ %w ] [ %{r}%l%{W} ] %{BW} %c %{= kw}'
# применяется .bashrc
shell -$SHELL
# Список табов, которые открываются по-умолчанию при каждой новой сессии screen
screen -t home 0 bash # название home, номер вкладки 0
chdir /home/www/sitename
screen -t sitename 1 bash
chdir /home/www/sitename/var/log
screen -t logs 2 bash
screen -t mysql 3 mysql -u USERNAME -p DB_NAME
Начало работы 
Проверить существование текущих сессий screen (если есть одна, то сразу произойдет вход, и отобразится список, если их несколько):
1
$ screen -r
Если сессий нет, то создаем свою новую под названием session:
1
$ screen -S session
Если правильно всё сделано, то запустится screen со уже с четырьмя вкладками home, sitename, logs, mysql :
Пример screen со вкладками

Пример screen со вкладками

Список комбинаций клавиш
Их на самом деле намного больше, ниже привожу самые необходимые.

Ctrl+a с (нажать одновременно “control” и “a“, отпустить и нажать “с“) – создать новую вкладку (окно)

Ctrl+a A (для ввода заглавной буквы А используется shift) – изменить заголовок текущего окна

Ctrl+a <число> – перейти на вкладку с номером <число> (активная вкладка обозначается символом «звезда» возле ее номера внизу экрана)

Ctrl+a (p|n) – переключение назад-вперед между вкладками. p – prev, n – next

Ctrl+a+a (удерживая control нажать a два раза) – переключение между двумя вкладками

Ctrl+a ” – список окон для переключения

Ctrl+a k – закрыть текущую вкладку (нужно подтвердить закрытие, нажатием на “y”)

Ctrl+a d – выйти из screen

Ctrl+a ? – вывод справки с комбинациями клавиш

UPD:

Убить сессию screen не заходя в нее можно из консоли:

1
$ screen -S session -X quit

либо в самом screen ввести команду quit с помощью комбинации Ctrl+a :


Список доступных сессий без входа в какую-либо из них:

1
$ screen -ls

 

Создать screen с монитором процессов (работает, если в ~/.screenrc не определено создание табов):

1
$ screen -S monitor top

 

Запускать screen при входе можно путем добавления в файл ~/.profile

1
2
3
screen -r session # для запуска определенной сессии по имени session
# либо
screen -d -r # если существует только одна сессия screen

Настроить vim можно с помощью файла ~/.vimrc

1
2
3
4
5
6
7
8
#.vimrc
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

Дополнительная информация:
http://www.opennet.ru/base/sys/screen2.txt.html
http://mmb.pcb.ub.es/~carlesfe/unix/screen.pdf – удобная шпаргалка по комбинациям
http://xgu.ru/wiki/man:screen  – перевод на русский язык официальной man-страницы screen

6 thoughts on “Использование screen в Linux

  1. Во-первых, ложить пароль от mysql в конфиг — нехорошо.
    Во-вторых, разместить лучше в обратном порядке вкладки, т.к. открывается последняя в списке.
    В третьих, можно в .profile написать screen -d -r и тогда при входе в профиль скрин включится автоматически.
    В четвертых, ты не указал, что значат числа при запуске “screen -t sitename 1 bash”. Это похоже на номер вкладки и у тебя там ошибка в примере — дважды №1 используется.

    Ну а так, статья хорошая для не-юниксоидов типа меня.

    • Женя, спасибо за отзыв.
      По поводу расположение вкладок. Я так понимаю, что это дело вкуса. Мне, например, удобно, чтобы последняя была с mysql, она по-умолчанию активна, где запрашивается пароль (да, да, именно здесь мы вводим пароль к БД, а не в конфиге).

      Хороший совет по поводу автоматического запуска screen при входе. Это работает если существует только одна сессия, а если их несколько? Придется указать имя этой сессии. Спасибо, добавил в пост.

      Также написал что означает -t sitename 1 bash.
      Ошибка в нумерации вкладок действительно присутствовала, исправлено.

      Еще раз спасибо за детальный анализ. Мои статьи читают, а это приятно 🙂

  2. Сегодня совершенно случайно наткнулся на полезную комбинацию клавиш переключения между двумя вкладками. Интересно использовать когда открыли, например, первую и третью. Чтобы постоянно не клацать ctrl+a 1, ctrl+a 3, достаточно один раз “запомнить” две вкладки, перейдя на них, а потом с легкостью переключаться, нажимая ctrl+a+a (удерживая контрол нажимать а два раза). Добавил в статью.

  3. Добавить в vimrc автоотступ в 4 пробела при нажатии на таб
    filetype plugin indent on
    ” show existing tab with 4 spaces width
    set tabstop=4
    ” when indenting with ‘>’, use 4 spaces width
    set shiftwidth=4
    ” On pressing tab, insert 4 spaces
    set expandtab

  4. Для того, чтобы на маке в терминале добавить скрол истории с помощью тачпеда, добавь в ~/.screenrc

    defscrollback 5000
    termcapinfo xterm* ti@:te@

Leave a Reply

Your email address will not be published. Required fields are marked *


+ семь = 8