Это старая версия документа.
Содержание
утилита 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
если вы осилили какую-либо полезную функцию - расскажите о ней здесь!