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