Утилита SCREEN - оконный менеджер терминала или как закрыть клиент SSH не убивая сессию

Во время обслуживания сайтов клиентов, а зачастую и при выполнении работ по администрированию сервера, используя удаленный доступ, приходится по несколько часов ждать завершения тех или иных задач откинувшись на спинку кресла. В принципе эта ситуация нормальная, но когда в конце 2-3 часовой работы отваливается сеть, а процессы еще не закончили работать - приходится грязно материться и начинать все заново. Вот и начинаешь задумываться над тем, как избежать такой ситуации.

Порывшись в интернете нашел ответ на данный вопрос. Вот несколько утилит которые помогут разрешить проблему.

nohup - утилита позволяющая запустить программу независимо от shell.
dtach - еще одна утилита для создания отдельных сессий для каждого приложения.
screen - утилита, являющаяся полноценным оконным менеджером для терминала
tmux - еще один оконный менеджер для терминалов, который является альтернативой screen

Аналогично порывшись в интернете можно найти описание всех их. Для ленивых можно почитать например здесь
h ttp://debiania.blogspot.com/2010/05/nohup-dtach-screen-tmux.html

Для себя выбрал утилиту SCREEN. Про нее и пойдет дальнейшее повествование.

По умолчанию она не установлена в FreeBSD, поэтому ставим ее.

cd /usr/ports/sysutils/screen 
make install clean 

После установки в каталоге /usr/local/etc появится общесистемный конфигурационный файл screenrc. Если нужно что-бы разные пользователи, могли запускать программу со своими настройками, просто копируем этот файл в домашнюю директорию юзера с именем .screenrc.

Во время работы с утилитой screen, почти все сочетания клавиш работают через комбинацию [ Ctrl+a ], то есть сначала нажимаете ее, а уже затем управляющую комбинацию, например, что-бы получить исчерпывающую информацию по всем сочетаниям клавиш, жмем: [ Ctrl+a, ? ].
Приведу самые мной используемые

с  - создать новый экран
p - предыдущий экран
n - следующий экран
d - выйти из утилиты screen  
\ - убить (kill) запущенный screen

Запустить утлиту можно командой
screen
или
screen -S test

где test - имя сессии придуманное вами
Если утилита SCREEN запущена, то в нее можно войти по команде

screen -rd

Утилита SCREEN может работать до тех пор пока сервер не будет перезагружен. Если такое случится, в системе останутся мертвые экземпляры, ранее работавших SCREEN, о чем мы будем проинформированы следующим образом:

screen -rd 
There are 
screens on: 
     48273.ttyp5.hostname     (Dead ???) 
Remove dead 
screens with 'screen -wipe'. 
There is no screen to be detached.

 От мертвых экземплярова можно избавиться командой

screen -wipe

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.