it-swarm-ru.tech

tmux vs. GNU Экран

просматривая вопросы Я нашел про tmux (я обычно использовал GNU Экран). Мой вопрос - каковы плюсы и минусы каждого из них. Особенно я не смог найти много о tmux.

196
Maciej Piechotka

От их веб-сайт :

  • Чем tmux отличается от экрана GNU? Что еще он предлагает?

tmux предлагает несколько преимуществ перед экраном:

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

На экране есть еще несколько функций, которые опускает tmux:

  • встроенная поддержка последовательных и Telnet; это раздувание и вряд ли будет добавлено в tmux;
  • более широкая поддержка платформ, например IRIX и HP-UX, а также для нечетных терминалов.
124
nisc

Одно из различий заключается в том, как они действуют, когда несколько терминалов подключены к одному сеансу.

С экраном каждый подключенный терминал не зависит от других. С tmux все подключенные терминалы видят одно и то же.

Допустим, к одному сеансу tmux подключены два терминала. Если вы печатаете ^B 1 в один терминал, другой терминал также переключается в окно 1.

Если к одному сеансу экрана подключены два терминала, и вы набираете ^A 1 в один, это не влияет на другой терминал.

Это основано на моем опыте с tmux 1.2; Я вижу, что 1.3 вышел, но я ничего не заметил в журнале изменений об этом изменении поведения.

Если вам нравится поведение экрана и вы хотите его в tmux:

Если ваш оригинальный сеанс tmux называется 0 (по умолчанию), тогда вы можете сделать tmux new-session -t 0) для запуска нового независимого сеанса, подключенного к тому же набору окон, который затем может иметь свой собственный вид.

45
drench

tmux довольно новый по сравнению с экраном GNU. Преимущества/недостатки - сложный вопрос, так как обе программы решают примерно одну и ту же проблему. tmux лицензируется BSD, а screen - GNU GPL. Это важно для некоторых людей.

на данный момент экран больше представлен (в Linux), то есть вы, скорее всего, найдете его на данной Linux-коробке, чем на tmux. Тем не менее, tmux больше представлен в OpenBSD, так как включен в базовую установку.

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

Как и в любой программе, она действительно зависит от ваших потребностей и того, что вам удобнее. Дайте им обоим попробовать и посмотреть, с чем вы играете хорошо.

Для получения дополнительной информации о tmux см. https://tmux.github.io/

25
gabe.

Я подумал, что упомяну об обёртке byobu, доступной для экрана, которая делает его намного лучше прямо из коробки. Я не знаю, доступно ли что-то подобное для tmux, но byobu сделало мой .screenrc всего лишь несколькими строками. Проверьте это быстрая статья о бёбу и скриншотах. Страница проекта для byob описывает название, которое происходит от японского термина для декоративных многопанельных экранов, которые служат в качестве разделителей складных комнат. Кроме того, просто запустить его не повредит ваши настройки экрана, так что вы можете спокойно попробовать. Как только вы начнете сеанс с помощью byobu, вы можете свободно подключиться к нему с помощью screen и ​​при этом не потерять никаких настроек, выполненных byobu (поэтому используйте его только для первоначального вызова). Два основных преимущества этого:

  • Запускает экран с парой строк состояния с полезной информацией
  • Обеспечивает множество сочетаний клавиш для более удобного доступа к функциям экрана

Я не использую часть сочетаний клавиш, но определенно считаю строки состояния полезными.

Также вам может пригодиться ссылка Screen Vs tmux . Я думаю, что большинство из них уже упоминалось в существующих ответах.

18
haridsv

Самым большим отличием моего использования было то, что в Gnu Screen вы можете разделять кадры только по горизонтали, тогда как в Tmux вы можете разделять как по горизонтали, так и по вертикали. Это своего рода движущаяся цель, хотя, как я здесь сказал, вертикальное разделение пробивается на экран .

Кроме того, все о квартире.

17
Eli Frey

Один большой недостаток для screen заключается в том, что он активно не разрабатывается. страницы ошибок содержат около 200 неназначенных элементов, возвращающихся в течение 5 лет.

tmux также имеет некоторые открытые проблемы, но гораздо меньше, и поддерживается более активно.

12
Harold

Дренч поднимает интересный вопрос - поведение по умолчанию при двойном подключении к одному и тому же сеансу в tmux отличается. Однако, если вы хотите присоединиться дважды и иметь независимый вид окон в этом сеансе - запустите tmux с

tmux new-session -t <session name>

Это создаст для вас новый сеанс и присоединит окна к уже существующему сеансу. Если вы не назвали свой первый сеанс, вы можете добавить его с помощью "переименовать сеанс".

12
Rikard Anglerud

tmux является более новым и несколько дополнительных функций.

Я обнаружил, что хорошее использование зависит от хорошей настройки.

Я использую vi (vim) для редактирования (Ruby on Rails), и есть несколько настроек, чтобы сделать это хорошо.

Вот мой файл ~/.tmux.conf с множеством полезных настроек:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
8
Michael Durrant

Я позволю себе добавить одно отличие:

tmux основан на ncurses, в то время как screen не рисует дополнительные элементы. Если кто-то использует эмулятор терминала, который поддерживает прокрутку (и), он получит прокрутку с экрана, но не с tmux (по крайней мере, в конфигурации по умолчанию). То же самое относится к поиску и аналогичным функциям.

8
Maciej Piechotka

У меня были проблемы с получением экрана с поддержкой utf-8 и 256 цветов, но tmux работал из коробки.

6
zvolkov