«Screen» — очень удобная программа которая имеет множество функций. Очень удобно использовать эту утилиту при удаленном подключении к системе по ssh. Но наиболее частое ее применение - сворачивание в фон программ, которые сами этого не умеют, с возможностью последюущего возврата к ним. это может быть полезно при работе с программами, которые реализованы не в виде «демон+клиент», а единым целым, и не работают без запуска интерфейса.
Установка screen
Для установки на Ubuntu нужно выполнить команду
sudo apt-get install screen
После этого нужно запустить screen:
screen
После запуска вы увидите либо приглашение командной строки, либо «экран приветствия», нажав SPACE или ENTER в котором, вы так же попадете в shell. При этом все команды будут запущены уже «внутри» screen’а.
Для того, чтобы выйти из screen’а (выйти, а не отсоединиться) достаточно выйти из всех открытых в нем оболочек, либо же, нажать комбинацию клавиш Ctl-a , и ответить «y» на вопрос «действительно ли вы хотите выйти».
Отсоединиться от текущего скрина, не закрывая и не завершая сессии, можно комбинацией Ctrl-a d.
Подключение к screen
Если у вас уже есть запущенная сессия, и вы хотите подсоединиться к ней, то
- если сессия одна, достаточно просто команды:
screen –x
- если сессий несколько, то: посмотреть список запущенных screen’ов можно командой screen -ls:
screen -ls
There are screens on:
2672.pts-0.ubuntu (Detached)
2437.pts-0.ubuntu (Detached)
2 Sockets in /var/run/screen/S-diesel.
Выбираем нужный нам screen, и присоединяемся к нему:
screen -x 2672.pts-0.ubuntu
Если вы хотите изменить название сессии и есть желание запустить и использовать несколько screen-сессий для разных задач. Придумываем название, затем запускаем новый screen вот таким образом:
$ screen -S "job1"
где job1 — это название нашей «переименнованной» сессии. Теперь в -ls мы увидим гораздо более понятное:
$ screen -ls
There are screens on:
2672.pts-0.ubuntu (Detached)
2795.job1 (Detached)
2437.pts-0.ubuntu (Detached)
3 Sockets in /var/run/screen/S-diesel.
и сможем подсоединиться к сессии job1, просто указав ее имя:
$ screen -x job1
Переключение между окнами screen
Все сессии сохраняются даже в то время, когда вы отключены от сервера, и все что в них запущено, продолжает выполняться.
Мониторинг выполнения команды
Если открыто несколько окон, полезной может быть возможность следить за активностью в каком-то из них. Переходим в окно с этой командой, жмем Ctrl — a m, видим надпись типа такой: «Window 0 (bash) is now being monitored for all activity». Когда что-то в окне изменится, screen подаст звуковой сигнал, а в списке окон после номера появится символ «@».
Прокрутка экрана в screen
Для просмотра вывода команды, который ушел выше границ окна, нужно нажать Ctrl-a [
Это переключит screen в Copy mode. Для выхода из этого режима просто нажмите Esc.
Конфигурация screen
Конфигурируется screen с помощью файла ~/.screenrc, в вашем домашнем каталоге. Например, можно написать туда:
caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
Это даст вам все время видимый список открытых окон, и другую полезную информацию внизу экрана.
Также при запуске Screen по-умолчанию выполняются команды из файла /etc/screenrc и файла .screenrc из домашнего каталога пользователя. Многие команды которые можно использовать в файлах конфигурации были рассмотрены в таблицах выше в поле «Текстовая команда». Ниже представлен пример конфигурации Screen из файла .screenrc:
# Отключить вывод лицензионной информации при старте Screen
startup_message off
# Открыть оболочку для работы
chdir
screen -t Work
# Открыть оболочку для управления конфигурацией
chdir /etc
screen -t Configuration
# Открыть оболочку для просмотра логов
chdir /var/log
screen -t Logs
# Выбрать первое окошко после старта
select 0
Этот файл конфигурации открывает три окна с именами Work, Configuration, Logs, соответственно в личном каталоге пользователя, в каталоге/etc и каталоге /var/log. После запуска на экране будет находиться первое окно с именем Work.
Завершение Screen
Если по какой-то причине сессия screen перестает отвечать, можно завершить ее. Для этого нужно подключиться к нужной сессии, затем нажать Ctrl — a и ввести команду «:quit».