Screen - полоноценный оконный менеджер для терминала, позволяет запускать несколько виртуальных терминалов в одном физическом и переключаться между ними, выполняя в каждом из них определенную задачу.
Со Screen'ом я познакомился достаточно недавно, а сподвигло меня на это вот какое событие. При обновлении портов на сервере FreeBSD внезапно прервалась связь, и я уставился в сообщение "Network is down!". Как закончилась процедура обновления, оставалось только догадываться.
Дабы не наступать на одни и те же грабли, занялся поиском решения. И нашел его в использовании Screen'а.
Установим из портов:
# cd /usr/ports/sysutils/screen
# make install clean
Конфигурационный файл /usr/local/etc/screenrc я оставил практически без изменений.
Запускаем Screen простой командой:
# screen
Теперь можно запускать в нескольких терминалах различные операции (обновление портов, компиляцию ядра и т.д.), редактировать конфиги, просматривать логи, не опасаясь за успешное их завершение (или сохранение) в случае обрыва связи.
Управление оконным менеджером осуществляется сочетаниями клавишами, почти всегда через нажатие Ctrl-a. Чаще всего использую такие комбинации:
Ctrl-a, c или Ctrl-a, Ctrl-с - запустить новый терминал;
Ctrl-a-a или Ctrl-a, Ctrl-a - переключение между терминалами;
Ctrl-a, 0...9 - переключение между терминалами 0...9;
Ctrl-a, d - выйти из screen (сам screen продолжает висеть в фоне, выполняя задачи);
Ctrl-a, k - убить текущее окно screen (требуется подтверждение - жмем "y");
Ctrl-a, \ - закрыть screen, убив все терминалы (требуется подтверждение);
Запустить можно сколько угодно экземпляров screen. Вывести список запущенных экземпляров можно командой:
# screen -ls
Видим следующее:
Присоединяемся к нужному нам экземпляру командой:
# screen -rd 77716
Обычно нет необходимости запускать несколько экземпляров screen, поэтому для быстрого входа можно использовать команду:
# screen -x
Если сервер перезагрузился, а screen в этот момент был запущен, то все его экземпляры "отмирают", и по команде screen -ls получим примерно следующее:
# screen -ls
There are screens on:
77716.ttyp0.hostname (Dead ???)
Remove dead screens with 'screen -wipe'.
Нужно избавиться от этого мертвого экземпляра, набрав команду:
# screen -wipe 77716
Очень удобный и архиполезный инструмент администрирования. Ставить всем непременно!
См.также:
Screen - полноценный оконный менеджер для терминала
Screen – оставляем процессы в фоне и идем спать
Обновлено 08.11.2010 08:15