- Posted in: Admin-tips
Иногда, общаясь с Unix-администраторами, я удивляюсь, слыша о том, что они не знают ничего об очень полезной UNIX-утилите – оконном менеджере Screen. Вот почему я решил рассказать здесь о том, как я использую его в своей повседневной работе.
Screen – это полноэкранный оконный менеджер, который разделяет физический терминал между несколькими процессами (обычно – между командными оболочками). Для каждого виртуального терминала существует свой прокручиваемый буфер истории и даже существует механизм copy-and-paste, позволяющий мользователю копировать текст между окнами. Когда уьилита screen запускается в первый раз, она создает пустое окно с командным интерпретатором (shell) внутри или сразу запускает указанную ей при старте команду. После этого она исчезает из поля видимости и позволяет Вам использовать программу так, как Вы делаете это обычно. Далее, в любой момент, вы можете создать новые (полноэкранные) окна с другими программами, убить текущее окно, просмотреть список активных окон, включить или выключить журналирование сессии, копировать текст между окнами, просматривать историю вывода в окне, переключаться между окнами и т.д. Все окна исполняют свои программы совершенно независимо друг от друга. Программы продолжают выполняться в своих окнах даже тогда, когда вы их не видите или даже Ваша сессия отключена от терминала.
В ежедневной админской работе эта утилита может быть полезна для запуска любых основанных на curses задач в фоновом ржиме. Для примера, если Вам нужно запустить полноэкранный клиент для bittorent (BitTornado) 🙂 для скачивания необходимых файлов, Вы не можете использовать обычный метод запуска задач в фоновом режиме при помощи утилиты nohup, т.к. это приложение требует полнофункционального терминала и не может быть запущено в фоне.
Если Вам необходимо запустить какое-либо приложение в фоновом режиме, Вы можете выполнить следующие шаги:
- Создать пустую сессию при помощи screen:
1# screen -dR some_screen_name - Запустить Ваше полноэкранное приложение:
1# btdownloadmany . - Отключиться от терминала при помощи нажатия Ctrl+a, d на Вашей клавиатуре.
Теперь Ваша программа работает в полноэкранном фоновом режиме. Вы можете отключиться от сервера или делать все, что захотите. Когда Вам понадобится посмотреть на текущее состояние программы, вы можете просто подключиться к фоновому терминалу при помощи следующей команды:
1 | # screen -dR some_screen_name |
Если Вы забыли имя фоновой сессии, вам достаточно просто набрать следующую команду чтобы увидеть список всех запущенных терминалов на данном сервере:
1 2 3 4 5 | # screen -list There is a screen on: 4330.some_screen (Detached) 1 Socket in /var/run/screen/S-root. # |
Как видите, утилита screen может быть очень полезна для запуска приложений в фоновом режиме на удаленных серверах и, даже, может послужить заменой старому методу перевода задач в фон при помощи жутких конструкций типа
1 | nohup command &> log.file & |
.