Многим часто приходится иметь дело с работой на удаленных серверах по ssh. При этом, могут возникать самые разные проблемы с соединением, и есть вероятность того что результат долгой и напряженной работы будет потерян из-за банального дисконнекта. Хорошо иметь возможность подключаться и отключаться от удаленных хостов, сохраняя терминальные сессии. В этом, а так же во многом другом, может помочь почти “классическая” утилита screen. Скорее всего, screen уже установлен на вашей linux-машине (если нет – самое время установить) и на серверах, с которыми вы собираетесь работать.

Итак, начинаем работу. Запустить новый screen можно, как ни странно, просто командой screen без параметров:

bukashk0zzz@debian:~$  screen

При этом, в зависимости от настроек screen в вашей системе, либо просто появится приглашение шелла, либо “экран приветствия”, нажав SPACE или ENTER в котором, вы так же попадете в shell. Вроде бы ничего необычного, кроме того, что этот shell будет уже запущен “внутри” screen’а.

Для того, чтобы выйти из screen’а (выйти, а не отсоединиться) достаточно выйти из всех открытых в нем оболочек, либо же, нажать комбинацию клавиш Ctl-a \, и ответить “y” на вопрос “действительно ли вы хотите выйти”.

Отсоединиться от текущего скрина, не закрывая и не завершая сессии, можно комбинацией Ctrl-a d.

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

bukashk0zzz@debian:~$  screen -x 

если сессий несколько, то посмотреть список запущенных screen’ов можно командой screen -ls:

bukashk0zzz@debian:~$  screen -ls
There are screens on:
        2762.pts-0.debian       (Detached)
        2743.pts-0.debian       (Detached)
2 Sockets in /var/run/screen/S-diesel.

bukashk0zzz@debian:~$

Выбираем нужный нам screen, и присоединяемся к нему:

bukashk0zzz@debian:~$  screen -x 2762.pts-0.debian 

Названия сессий по-умолчанию малоинформативны – просто номера процессов, если есть желание запустить и использовать несколько screen-сессий для разных задач, можно придумать более вменяемые названия. Придумываем название, затем запускаем новый screen вот таким образом:

bukashk0zzz@debian:~$  screen -S "job1" 

где job1 – это название нашей “именнованной” сессии. Теперь в -ls мы увидим гораздо более понятное:

bukashk0zzz@debian:~$  screen -ls
There are screens on:
        2762.pts-0.debian       (Detached)
        2795.job1       (Detached)
        2743.pts-0.debian       (Detached)
3 Sockets in /var/run/screen/S-diesel.

и сможем подсоединиться к сессии job1, просто указав ее имя:

bukashk0zzz@debian:~$  screen -x job1

Как вы уже поняли, сессии сохраняются даже в то время, когда вы отключны от сервера, и все что в них запущено, продолжает выполняться. Впрочем, на этом возможности screen’а не исчерпываются. Иногда, при работе по ssh, очень хочется, чтобы было открыто сразу несколько терминалов, при этом коннектиться несколько раз облом – особенно если коннектиться нужно через несколько серверов. В этом тоже может помочь screen. Просто нажмите Ctrl – a c, и откроется еще один шелл. Перемещаться между открытыми шеллами можно либо через Ctrl – a <Цифра>, где <Цифра> – номер открытого шелла, начиная с нуля, либо Ctrl – a n/Ctrl – a p – вперед назад. Получить список открытых “око” консолей (и переключиться на нужную), можно комбинацией клавиш Ctrl – a ”; чтобы задать нормальное имя (а не просто скучный “bash”) для какого-нить окна, перейдите в него и нажмите Ctrl – a A (регистр имеет значение), затем в появившемся приглашении введите имя. Если открыто несколько окон, полезной может быть возможность следить за активностью в каком-то из них. Например, если вы запустили “долгоиграющую” команду и интересно узнать, когда она завершится. Переходим в окно с этой командой, жмем Ctrl – a m, видим надпись типа такой: “Window 0 (bash) is now being monitored for all activity”. Когда что-то в окне изменится, screen подаст звуковой сигнал, а в списке окон после номера появится символ ”@”.

Конфигурируется screen с помощью файла ~/.screenrc, в вашем домашнем каталоге. Например, можно написать туда вот такую абракадабру:

caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

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

  3 Responses to “Screen – виртуальный терминал HowTo”

  1. С вашего позволения, добавлю вашу статью в раздел ссылок на http://ru.wikipedia.org/wiki/Screen

  2. Але самий фінт це коли зробити так:

    Спочатку контрол+а, потім shift+s, а далі вже контрол+а tab і контрол+а с
    І буде типу такого http://upload.wikimedia.org/wikipedia/commons/7/72/GNU_Screen.png Можна заюзати замість shift+s | , але в старих версыях таке не працює.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2011 Записи о настройке Debian, Ubuntu
доставка цветов по киеву . . установка электрических плит, мы знаем. . эротические обои для android . Jabra ARROW украина . .
Украина онлайн Rambler's Top100 Каталог MyList.com.ua каталог сайтів