Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

tmux в качестве замены gnu screen

04.02.12, 12:12
Автор ggg

Многие Unix-администраторы, работающие с удаленными серверами через SSH, используют класс программ, называемых terminal multiplexers. Такие программы позволяют запустить долгоиграющий процесс, отключиться от сервера, а через некоторое время вернуться и посмотреть результат выполнения программы. Также, terminal multiplexer-ы отчасти решают проблему обрыва связи и позволяют запускать несколько shell-сессий в рамках одного виртуального терминала.

Долгое время стандартом де-факто среди terminal multiplexer-ов был проект GNU Screen. Эта программа имеет достаточно широкие возможности, начиная от совместной работы нескольких пользователей и заканчивая горизонтальным разделением окна терминала и запуск двух параллельных shell-сессий.

Почему же пользователь должен отказаться от столько мощного и удобного решения ради чего-то другого? GNU Screen практически не поддерживается - последнее официальное обновление проекта было в далеком 2005 году, код GNU Screen ужасен, сложен для понимания и изменения. Конфигурационные файлы GNU Screen так же ужасны как код, поэтому пользователи с большей готовностью копируют чужие, пусть и не самые удобные настройки, вместо того, чтобы написать свои. Приведем простой пример конфигурационного файла GNU Screen, взятого с сайта debian-administration.org

hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

Разве это можно назвать интуитивно понятным? Многие пользователи GNU Screen хотели получить возможность вертикального разделения экрана пополам (мне, как Rails-разработчику такое поведение особенно удобно при тестировании проекта на широком мониторе: в левой части экрана запускается vim, а в правой - rspec, после чего можно наблюдать, какие тесты провалились и оперативно исправлять соответствующий код). К сожалению патч, добавляющий эту функциональность так и не вошел в основную ветку проекта.

Чем tmux лучше GNU Screen? Tmux FAQ приводит такие причины

  • четкая клиент-серверная модель позволяющая переносить окна из одной сессии в другую в рамках одного tmux сервера
  • все команды выполняются одинаково, независимо от того, как они были вызваны: через shell или keybinding
  • tmux имеет несколько copy-paste буфферов, такая опция может показаться не очень важно на первый взгляд, но все же может оказаться достаточно полезной в некоторых ситуациях
  • возможность использовать для управления сочетания клавиш в стиле  vi или emacs
  • возможность ограничить размер окна
  • возможность поиска по нескольким окнам (в Screen есть возможность поиска только по одному окну)
  • более простой и понятный конфиг-файл
  • более простой в поддержке код проекта

Что понравилось в tmux лично мне, так это двухуровневая модель объектов: есть окна, каждое из которых может содержать 1 или несколько панелей, в то время как GNU Screen содержит только окна. Такая модель кажется мне более логичной.

Установить tmux в Ubuntu можно с помощью пакетного менеджера так:

sudo apt-get install tmux

Подробнее о настройке tmux можно почитать в этой статье

Комментарии

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

Войдите, чтобы оставить комментарий