Это старая версия документа.


утилита screen

введение

данная утилита имеет множество функций, но наиболее частое ее применение - сворачивание в фон программ, которые сами этого не умеют, с возможностью последюущего возврата к ним. это может быть полезно при работе с программами, которые реализованы не в виде «демон+клиент», а единым целым и не работают без запуска интерфейса. типичный пример - rtorrent, который при всех своих преимуществах запускается только в виде консольного интерфейса, а в фон уходить не умеет, можно только «выйти вообще». его и возьмем в качестве примера

запуск screen и основы работы

screen создает отдельные объекты, называемые иногда «скринами». каждый скрин - это что-то вроде окна, которое можно свернуть-развернуть, если проводить аналогию с графическим интрефейсом. только вместо окна вы получаете виртуальную консоль, которую можно отправить в фон или вывести на передний план, и в которой запускается указанное приложение. простейший запуск осуществляется командой

screen

при запуске в таком виде, т.е. без параметров, программа создаст новый скрин, в котором откроет сессию командной оболочки, как если бы вы залогинились в tty-консоли или открыли новую вкладку в графическом терминале. для наглядности выполните что-нибудь в командной строке - например, ls. а теперь о том, как свернуть запущенный скрин вместе со всем, что в нем работает. для этого нужно нажать Ctrl+A, после чего нажать D. в принципе, это единственная комбинация, которую простому пользователю стоит запомнить. Ctrl+A переведет screen в командный режим. клавиша D даст команду свернуть текущий скрин. теперь вы можете закрыть терминал или разлогиниться с tty-консоли - запущенный в свернутом скрине процесс продолжит работу в фоне. для того, чтобы вернуться к свернутому скрину, достаточно запустить

screen -r

ключ -r как раз и укажет программе, что нужно развернуть свернутый скрин (если таковой, конечно, имеется). перед вами должна предстать та самая сессия в консоли, которую вы свернули, со всем, что в ней было. теперь выйдете из сессии с помощью команды exit. screen сообщит о завершении своей работы. таким образом, вам достаточно выйти из запущенного в скрине процесса, а screen выключится сама.

теперь запустим вышеупомянутый rtorrent. делается это предельно просто - нужно указать screen команду для запуска. тогда вместо командной оболчки откроется указанная программа

screen rtorrent

ну вот, перед вами rtorrent. теперь можно свернуть его, а потом вернуться к нему, как описано выше. rtorrent будет качать/раздавать в фоне, избавляя вас от необходимости держать ради него открытую вкладку терминала или tty-консоль (что еще и небезопасно)

работа с несколькими скринами

если вам нужно запустить лишь одну программу - вышеописанного более чем достаточно. в случае же, если таких программ несколько - скринам нужно будет раздать имена, чтобы screen знала, к какому именно свернутому скрину вы хотите вернуться. имя создаваемого скрина задается с помощью ключа -S

screen -S rtor rtorrent

теперь сверните скрин с rtorrent'ом и запустите еще что-нибудь. например, nano

screen -S nano nano

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

screen -r nano

кстати, список запущенных скринов можно посмотреть с помощью

screen -list

запуск скрина в свернутом виде

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

screen -dmS rtor rtorrent

ключ -d укажет, что скрин нужно свернуть, а ключ -m - что его нужно для начала создать. процесс «усложняется» по той причине, что ключ -d по умолчанию используется для сворачивания ранее запущенного скрина, развернутого на другой консоли или в соседней вкладке, с той целью, чтобы развернуть его в текущем месте.1) вот таким образом нужная программа запустится сразу в фоне, а screen лишь выведет сообщение о том, что программа запущена, и скрин свернут.

прочие возможности

данная статья описывает лишь основы, на самом деле утилита screen обладает массой возможностей. например, можно разбить экран пополам, отобразив несколько скринов с разными программами. можно задать множество разных параметров, настроить под разные типа терминалов. во всем этом как всегда поможет разобраться screen –help или man screen. и есть еще одна полезная комбинация клавиш. как сказано в мануле, «если вам лень читать кучу текста - запомните эту комбинацию» - Ctrl+A и затем ?2). вам будет выведен список доступных сочетаний клавиш и команд, которые они выполняют. все это нажимается так же после Ctrl+A


если вы осилили какую-либо полезную функцию - расскажите о ней здесь!FIXME

1)
ибо если одна и та же программа управляется из двух мест - это может и к конфузу привести
2)
«?» - это правый shift плюс кнопка слева от него