tmux vs. GNU Screen [закрито]


194

Переглядаючи питання, які я дізнався про tmux (я зазвичай використовував GNU Screen). Моє запитання - які плюси і мінуси кожного з них. Тим більше я не міг знайти багато про tmux.


9
Також обговорювалося на superuser.com/questions/236158/tmux-vs-screen
Ллойд Дьюольф

5
Як видно з хороших відповідей нижче, вони не ґрунтуються на думці.
reinierpost

@reinierpost - здається, що багато людей тут занадто швидко закривають питання, як "насамперед на основі думки". Однак ми можемо проголосувати за повторне відкриття.
MountainX

Хоча це запитання є питанням порівняння, я вважаю, що аргументи проти та проти є достатньо об'єктивними, і тому причина близької самовпевненості тут не в порядку. Ви можете перевірити пов’язане питання SU, відповіді - це цілком нормально.
пітер

Відповіді:


122

З їх веб-сайту :

  • Чим tmux відрізняється від екрана GNU? Що ще пропонує?

tmux пропонує ряд переваг перед екраном:

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

Є ще кілька функцій, що містять екран, який tmux опускає:

  • вбудована підтримка послідовних і telnet; це роздуто і навряд чи буде додано до tmux;
  • ширша підтримка платформи, наприклад IRIX та HP-UX, і для непарних терміналів.

4
чорт ... зараз я хочу спробувати tmux ... тільки тому, що екран не працював для мене через відсутність vi клавіатурних зв'язків.
ксенотеррацид

1
Чи пов'язування клавіш vi або emacs означає лише, що tmux має два зручні набори за замовчуванням? Можна повністю налаштувати клавіші екрану за допомогою його rc-файлу.
jw013

Ви можете визначити довільні прив’язки ключів. Дивіться: openbsd.org/cgi-bin/…
nisc

Коли вони говорять про реалізацію, вони повинні , нарешті , вирішити цю дурну помилку з <C-Left>в vimв tmux.
йо

45

Одна відмінність полягає в тому, як вони діють, коли декілька терміналів приєднані до одного сеансу.

З екрану подання кожного приєднаного терміналу не залежить від інших. З tmux всі приєднані термінали бачать одне і те ж.

Скажімо, у вас є два термінали, приєднані до одного сеансу tmux. Якщо ви введете ^B1 в один термінал, інший термінал також перейде до вікна 1.

Якщо у вас є два термінали, приєднані до одного сеансу екрану, і ви вводите ^A1 в один, це не впливає на інший термінал.

Це ґрунтується на моєму досвіді роботи з tmux 1.2; Я бачу, що 1.3 немає, але я нічого не помітив у журналі змін про цю поведінку.

Якщо вам подобається поведінка екрана і ви хочете його в tmux:

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


1
Це цікава відмінність. Я впевнений, що кожен із них має переваги для різних випадків використання. (перевага tmux: двоє людей, приєднаних до одного сеансу tmux, наприклад, для програмування віддаленої пари завжди побачать одне і те ж; перевага екрану: одна людина, приєднана до одного і того ж екрану з двох місць для двох різних цілей, може мати два різні види, навіть одночасно (з , скажімо, віконні (Windows / windowmanager-level) windows).)
lindes

10
якщо ваш початковий сеанс tmux називається "0" (за замовчуванням), ви можете зробити "tmux new-session -t 0"), щоб запустити новий незалежний сеанс, підключений до того ж набору вікон, який може мати свій власний вид. Я впевнений, що це спрацьовувало в 1,2 / 1,3, але я не можу згадати на беззаперечному рівні.
Кос

@cos це саме та порада, на яку я шукав. Дуже дякую. Я б хотів, щоб я міг проголосувати за вас двічі :) Я зараз щоразу почну повторне з'єднання з 'tmux new-session -t 0'.
jrwren

@Cos Додано "ВІД 1,0 до 1,1, 05 листопада 2009 року". @jrwren Команду можна скоротити tmux new -t 0.
користувач285259

24

tmux є доволі новим порівняно з екраном GNU. Переваги / недоліки - це складне питання, оскільки обидві програми вирішують приблизно одну і ту ж проблему. tmux має ліцензію на BSD, а на екрані - GNU GPL. Це має значення для деяких людей.

на даний момент екран більш представлений (на Linux), тобто ви, швидше за все, знайдете його в заданому вікні Linux, ніж на tmux. tmux, однак, більше представлений на OpenBSD, оскільки він включений як частина базової установки.

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

Як і будь-яка програма, вона дійсно залежить від ваших потреб і з якою вам комфортніше. Спробуйте їх і побачити, з чим ви добре граєте.

Для отримання додаткової інформації про tmux дивіться https://tmux.github.io/


17

Найбільша різниця в моєму використанні полягала в тому, що в Gnu Screen можна розділяти кадри тільки по горизонталі, тоді як у Tmux ви можете розділяти як горизонтально, так і вертикально. Це своєрідна рухома ціль, хоча, як я тут розповідаю, вертикальний розкол робить шлях на екран .

Крім того, речі про плоскі.


10
ви також можете розділити вертикально на екрані. ммм ... принаймні, він працює в екрані Ubuntu 10.10 за замовчуванням.
Стенн

4
@andre існував давній патч для вертикального розколу екрана ... який ніколи не був включений у верхній потік ... але я впевнений, що багато дистрибуторів застосували його.
ксенотеррацид

17

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

  • Починає екран з парою смужок стану з корисною інформацією
  • Забезпечує безліч клавіатурних зв’язків для легшого доступу до функцій екрана

Я не використовую частину прив'язок клавіатур, але, безумовно, знаходжу смужки стану корисними.

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


Ваша відповідь була б кориснішою, якби ви узагальнили функції byobu, як-от ця відповідь, зі списком її функцій.
Жиль,

Гаразд, я додав більше інформації про byobu, але це так само просто, як запустити команду та знайти її для себе (вона керується меню), оскільки вона не порушує існуючі налаштування екрана. І я зробив свою відповідь вікі спільноти, тому сміливо редагуйте її.
haridsv

1
Схоже, byobu також підтримує tmux, принаймні, в останніх версіях.
Дараель

12

Drench викликає цікавий момент - поведінка за замовчуванням підключення двічі до одного сеансу відрізняється в tmux. Однак якщо ви хочете приєднати двічі та мати незалежний перегляд вікон у цьому сеансі, - почніть tmux з

tmux new-session -t <session name>

Це створить новий сеанс для вас та додасть вікна з уже наявного сеансу. Якщо ви не назвали свій перший сеанс, можете додати його за допомогою "перейменувати сесію".


12

Одним із важливих проблем screenє те, що він активно не розвивається. На сторінках помилок налічується близько 200 непризначених елементів, що повертаються протягом 5 років.

tmux є і деякі відкриті питання, але набагато менше, і їх більш активно підтримують.


8

tmux - новіший і ще кілька функцій.

Я виявив, що корисне використання залежить від гарного налаштування.

Я використовую vi (vim) для редагування (рубін на рейках), і є кілька налаштувань, щоб зробити це добре.

Ось мій файл ~ / .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"

Tmux є більш новим, але "кілька інших функцій" означає, що він також має принаймні паритет функцій із екраном, що не має місце - Окрім того, що було зазначено в іншому місці, багатокористувацької підтримки tmux вкрай не вистачає. Ніяких acls або status, і просто загалом це показує новину tmux в тому, що те, що ти можеш зробити, не дуже відшліфоване.
півріччя

Це добре знати. Зараз я використовую його вже рік і не помічаю потреби в поліруванні, хоча маленький угорський може допомогти. Позначення, яке є. добре поганий каламбур;) Не використовував екран раніше, тому не помічаючи згаданих проблем. Складніше перейти на екран і втратити нові функції вже зараз.
Майкл Дюрант

8

Я смію додати одну різницю:

tmux - це ncurses, поки екран не малює додаткових елементів. Якщо хтось використовує емулятор терміналу, який підтримує прокрутку, він отримає прокрутку екраном, але не tmux (принаймні в конфігурації за замовчуванням). Те саме стосується пошуку та подібних функцій.


2
У мене не було прокрутки з екраном, як ... ніколи? : /
souser12345

так, моя TE підтримує прокрутку, і екран розбиває її ... Я повинен прокручувати екран. -1 не видається точним.
ксенотерацид

@xenoterracide: Хм. Ви частково праві. Екран у деяких дистрибутивах / системах (старший Gentoo) не порушує його, а в деяких (новий Ubuntu). Я поняття не маю, чому.
Maciej Piechotka

можливо, патч ... у нас всі 5,5 центові системи
ксенотеррацид

6

У мене виникли проблеми з екраном для підтримки utf-8 та 256 кольорів, але tmux вийшов з коробки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.