Содержание
Введение
- Данная утилита GNU Screen имеет множество функций. Очень удобно использовать эту утилиту при удаленном подключении к системе по ssh. Но наиболее частое ее применение - сворачивание в фон программ, которые сами этого не умеют, с возможностью последюущего возврата к ним. это может быть полезно при работе с программами, которые реализованы не в виде «демон+клиент», а единым целым, и не работают без запуска интерфейса. Типичный пример - rtorrent, который при всех своих преимуществах запускается только в виде консольного интерфейса, а в фон уходить не умеет, можно только «выйти вообще». Его и возьмем в качестве примера.
Запуск и основы работы Screen
- Screen создает отдельные объекты, называемые иногда «скринами». Каждый скрин - это что-то вроде окна, которое можно свернуть-развернуть, если проводить аналогию с графическим интрефейсом. Только вместо окна вы получаете виртуальную консоль, которую можно отправить в фон или вывести на передний план, и в которой запускается указанное приложение.
- Простейший запуск осуществляется командой:
screen
- При запуске в таком виде, т.е. без параметров, программа создаст новый скрин, в котором откроет сессию командной оболочки, как если бы вы залогинились в tty-консоли или открыли новую вкладку в графическом терминале, для наглядности выполните что-нибудь в командной строке - например,
ls
. - Теперь о том, как свернуть запущенный скрин вместе со всем, что в нем работает. Для этого нужно нажать Ctrl+A, после чего нажать D. в принципе, это единственная комбинация, которую простому пользователю стоит запомнить. Сtrl+A переведет screen в командный режим. клавиша D даст команду свернуть текущий скрин. Теперь вы можете закрыть терминал или разлогиниться с tty-консоли - запущенный в свернутом скрине процесс продолжит работу в фоне.
- Для того, чтобы вернуться к свернутому скрину, достаточно запустить:
screen -r
- Ключ
-r
как раз и укажет программе, что нужно развернуть свернутый скрин (если таковой, конечно, имеется). Перед вами должна предстать та самая сессия в консоли, которую вы свернули, со всем, что в ней было. - Теперь выйдете из сессии с помощью команды
exit
. Screen сообщит о завершении своей работы. Таким образом, вам достаточно выйти из запущенного в скрине процесса, а screen выключится сама. - Далее запустим вышеупомянутый rtorrent. Делается это предельно просто - нужно указать screen команду для запуска. Тогда вместо командной оболочки откроется указанная программа:
screen rtorrent
- Перед вами открылся rtorrent, его можно свернуть, а потом вернуться к нему, как описано выше. Rtorrent будет качать/раздавать в фоне, избавляя вас от необходимости держать ради него открытую вкладку терминала или tty-консоль (что еще и небезопасно).
Работа с несколькими скринами
- Eсли вам нужно запустить лишь одну программу - вышеописанного более чем достаточно, но в случае если таких программ несколько - скринам нужно будет раздать имена, чтобы screen знала, к какому именно свернутому скрину вы хотите вернуться. Имя создаваемого скрина задается с помощью ключа
-S
:
screen -S rtor rtorrent
- Cверните скрин с rtorrent'ом и запустите еще что-нибудь, к примеру nano:
screen -S nano nano
- Этот скрин также сверните. Теперь можно вернуться к любому из двух скринов аналогично вышеописанному, только с указанием имени скрина, который вы хотите развернуть, например:
screen -r nano
- Список запущенных скринов можно посмотреть с помощью:
screen -list
или
screen -ls
- Возможно также вернуться к уже развернутому в ином терминале скрину:
screen -x nano
Запуск скрина в свернутом виде
- Программу можно запустить сразу в свернутом скрине. Это полезно в случае с автозапуском, или когда вы знаете, что программа сама все сделает (установит соединение и продолжит закачку/раздачу в нашем примере с rtorrent), и смотреть там не на что. Делается все опять же просто. Команда на запуск будет такой:
screen -dmS rtor rtorrent
- Ключ
-d
укажет, что скрин нужно свернуть, а ключ-m
- что его нужно для начала создать. Процесс «усложняется» по той причине, что ключ-d
по умолчанию используется для сворачивания ранее запущенного скрина, развернутого на другой консоли или в соседней вкладке, с той целью, чтобы развернуть его в текущем месте (ибо если одна и та же программа управляется из двух мест - это может и к конфузу привести). Таким образом нужная программа запустится сразу в фоне, а screen лишь выведет сообщение о том, что программа запущена, и скрин свернут.
Прочие возможности
- Данная статья описывает лишь основы. На самом деле утилита screen обладает массой возможностей, например: можно разбить экран пополам, отобразив несколько скринов с разными программами; можно задать множество разных параметров, настроить под разные типа терминалов. Во всем этом поможет разобраться
screen –help
илиman screen
. Также есть еще одна полезная комбинация клавиш. Как сказано в мануале, «если вам лень читать кучу текста - запомните эту комбинацию» - Ctrl+A и затем ? 1). Вам будет выведен список доступных сочетаний клавиш и команд, которые они выполняют. Все это нажимается также после Ctrl+A.
Ссылки
если вы осилили какую-либо полезную функцию - расскажите о ней здесь!
1)
«?» - это правый Shift плюс кнопка слева от него