Использование screen в консоли (linux, OS X)

Салют всем, кто любит терминал. Сегодня я расскажу вам про screen.
Для начала ответьте на вопрос — нравится ли вам открывать новые вкладки в браузере? Если нет, то тогда не читайте =)
В консоли (в моем примере — это terminal Ubuntu 13.10) тоже можно открывать вкладки. Даже горячие клавиши как в браузере: ctrl+shift+t

1389858329965

Удобно? Конечно! Какие минусы? Не везде вы можете открыть новую вкладку в консоли. Например, когда работаете по SSH на удаленном сервере. Или еще один минус, но уже очень крутой плюс screen — это работа вашей команды, когда вкладка закрыта. Закрываете вкладку — выполнение команды прекращается. Закрываете screen — ваша команда продолжает работать! Почему это круто, для тех кто еще не понял — немного терпения. Я тут статью пишу, чтобы ее бот яндекса проиндексировал)

Итак, набираем в консоли screen — попадаем в пустой терминал, если внизу написано «new screen» — жмем энтер. Сейчас вы можете выполнять любые команды как обычно.

Чтобы выйти из «скрина» — нажимайте ctrl A (отпускаете A, но продолжаете держать ctrl) D. Будет написано detached

1389858907835

Чтобы вернуться в последний созданный вами «скрин», пишите в консоли screen -R
Ура, поздравляю вас, вы только что научились использовать screen в командной строке. Копнем глубже.
Наберите команду screen -list

Она вам расскажет, что у вас есть один скрин с непонятным именем.

Давайте создадим еще один с понятным, у меня это будет UA (для украинской версии сайта).
screen -DR UA

Я автоматически попадаю в этот скрин. Далее в нем я, пожалуй, запущу свой сервер для UA сайта и выйду. Сервер продолжит свою работу, даже если я закрою терминал. Если же вы работаете с удаленным сервером — то вы можете даже выключить компьютер. Ваша команда продолжит работу в screen.

Теперь введем снова screen -list

1389858136631

Видим что мы отцеплены от обоих скринов. У одного имя, которое дала система, так как мы просто написали screen, а у второго — наше вполне себе понятное имя.

Чтобы прицепиться к последнему активному скрину, вы уже выучили команду screen -R, а теперь выучите еще одну

screen -R NAME

Вместо NAME — я написал UA и попал на свой скрин с украинской версией.

Подведем итог: вы можете запускать screen там, где у вас нет возможности создать новую вкладку. Вы можете запустить «в скрине» какую-нибудь команду, и она будет работать, даже если вы «отцепитесь» (ctrl A,D) от вкладки, а в случае с работой по SSH — даже если вырубите комп, лишь бы сервер где вы выполнили скрин — работал.

Я рекомендую вам положить в скрин, команды, которые должны следить за чем-то, что-то перезапускать. Команды, которые не требуют вашего участия. Например, для node.js вы можете в скрине запустить supervisor app.js — и ваше приложение будет перезагружаться в нужном случае, когда вы меняете файлы, а вам не надо будет постоянно писать node app.js и даже не нужно будет выделять закладку в верхней области терминала.

P.S. чтобы убить свою screen сессию, подцепитесь к ней (screen -D NAME) и наберите exit.

comments powered by HyperComments
При копировании материалов обратная ссылка на play-stop.ru желательна обязательна!