Questão Byobu vs. Tela GNU vs. TMux - utilidade e transferibilidade de habilidades [fechadas]


Até agora eu usei Konsole para gerenciar várias sessões de shell, mas eu não tentei Byobu, Tela GNUe tmux, que oferecem melhor suporte para vários shells. Todos eles compartilham um recurso principal, que é permitir desanexar a sessão atual e, posteriormente, reconectá-la à sessão antiga.

Para me ajudar a escolher uma ferramenta para aprender, gostaria de saber: como elas diferem nos seguintes aspectos?

  1. Recursos (obviamente)
  2. Maturidade do projeto. Eu não quero aprender uma ferramenta que está mudando demais. Os aprimoramentos são bem-vindos, mas não gosto de surpresas, como recursos que estão desaparecendo.
  3. Curva de aprendizado
  4. Disponibilidade em diferentes plataformas. Se eu aprender uma ferramenta, gostaria de poder usá-la em um servidor FreeBSD, desktop SuSE ou Ubuntu.
  5. Compatibilidade com outros programas shell interativos. Ainda posso usar vim e emacs -nw (modo não janela, ou modo de texto) da mesma maneira que eu estou acostumado? Os atalhos de teclado entrarão em conflito com os de outras ferramentas?

Eu apenas tentei todos eles e o Byobu parece uma espécie de front-end para o GNU Screen e o tmux. Então, por que alguém criou Byobu em vez de contribuir para o projeto de tela GNU e adicionar novos recursos? Por que o Byobu não é algum tipo de modo de interface avançada no GNU Screen? Se eu usar o Byobu como minha ferramenta diária com a tela GNU como backend, posso transferir esse conhecimento para usar o GNU Screen sem o Byobu se uma determinada máquina tiver apenas o GNU Screen?


78


origem


Comentando minha própria pergunta. Depois que postei, acabei de ver o número de vezes que cada tag foi usada no StackExchange: gnu-screen: 199 vezes tmux: 125 vezes byobu: 18 vezes Isso significa que byobu ainda não é popular? Ou que o byobu é tão intuitivo que ninguém tem dúvidas sobre como usá-lo? - Keitai
Porque byobu é apenas um garfo de screen com recursos extras, então o gnu-screen tag se aplica. - grawity
De acordo com a documentação (manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html) a configuração padrão do Byobu é usar o tmux como o backend padrão. Se o byobu é um fork do gnu, isso significa que o tmux é melhor que o gnu? - Keitai
Interessante, eu não sabia que ele suporta o tmux agora, embora permaneça apenas um script wrapper - nem mesmo um fork aparentemente. Mas sim, o tmux é, de certa forma, melhor que o Screen (pelo menos seu FAQ reivindicações assim). - grawity
Byobu não é um garfo de nada! É uma camada no topo do Screen e do Tmux, similar ao Gnome / KDE sendo uma camada no topo do Xorg. - Dustin Kirkland


Respostas:


Para Tmux vs GNU Screen, leia

e várias outras encarnações de comparação que podem ser encontradas em blogs e tal.

Alguns termos gerais que são frequentemente repetidos:

  • O Tuxux é mais novo. Isto significa que é um pouco mais sofisticado (separação vertical simples, linhas verdes agradáveis) e um pouco menos bem testado para, e. compatibilidade (em grau insignificante, de acordo com seus proponentes).
  • O Tuxux é mais enxuto em recursos.
  • O GNU Screen é encontrado em todos os lugares e provavelmente ainda é mais usado.

Além disso, pode-se observar funções específicas para uma ou outra alternativa, e a preferência pessoal dominará a discussão. Eu pessoalmente costumava usar o GNU Screen pesadamente - agora eu uso o Tmux.

Eu não achei Byobu para ter qualquer "recursos de matador" para mim. Ele fornece uma abstração onde eu acredito que nenhum é necessário para meus casos de uso.


Outra maneira de ver isso é observar que o Byobu pode usar o GNU Screen ou o Tmux como backend, o que mostra que as diferenças de um POV do usuário são principalmente superficiais.


25





Ótima pergunta! Por que vale a pena, eu sou o autor e mantenedor de Byobu.

Byobu é uma camada de configuração, originalmente escrita para ficar em cima Tela GNU, mas agora também funciona em cima Tuxux.

Eu comecei a escrever Byobu de volta Dezembro de 2008, como eu encontrei um monte de usuários Screen e Ubuntu Server no Googleplex e descobriu que todos nós mantivemos nosso próprio grupo de hacks legais / divertidos / úteis em nosso ~/.screenrc configurações. E tivemos que movê-los manualmente entre as dezenas ou centenas de servidores que usamos. Nós começamos a trocar dicas e truques, e eu comecei a coletá-los no original GPLv3 projeto chamado "perfis de tela". Cerca de 6 meses depois, toda uma comunidade se desenvolveu em torno de "perfis de tela"e o projeto se tornou muito mais do que apenas screen hacks - nós tínhamos utilitários de configuração, plugins de status ao vivo e atalhos de teclado. Então nós renomeou o projeto "Byobu", que é uma palavra japonesa para essas "telas" elegantes e dobráveis, e tem o benefício adicional de poder ter mais sucesso no Google para "Byobu $ FOO" do que "Screen $ FOO".

Com o Byobu agora na maioria das distribuições Linux (Ubuntu, Debian, Fedora, Arco), e funcional na maioria dos Macs / BSDs e outros UNIXes, dá a mesma aparência e sensação, atalhos de teclado convenientes, informações dinâmicas de status do sistema em qualquer terminal que você possa precisar acessar.

Por que não contribuir para o projeto GNU Screen? Algumas razões ... Tudo o que o Byobu funciona tão bem quanto as opções de configuração. Nada disso necessidades para ser incluído na base de origem da tela para ser funcional. Algumas coisas podem funcionar melhor ou ter melhor desempenho se a Tela as incluir por padrão, mas muitas das mudanças são muito "opinativas", que geralmente são difíceis ou impossíveis de contribuir para uma 25 anos de idade projeto upstream. Além disso, o projeto GNU Screen está se movendo muito lentamente, se é que o faz. Tem mais de 25 anos e não teve um lançamento oficial desde Agosto de 2008. Cada distribuição está carregando enormes quantidades de correções apenas para manter seu / usr / bin / screen funcionando e seguro. por exemplo, o Ubuntu e o Debian estão atualmente carregando 19 mil linhas de código em ~ 48 remendos.

Eu aprendi sobre o Tmux cerca de 2 anos atrás, e realmente me apaixonei pelo código fonte, design, interface e comunidade ativa! Eu tive um tempo muito mais fácil contribuindo com correções para o upstream do Tmux e discutindo tópicos na lista de discussão. E como um usuário do Byobu que usa em todos os lugares, eu queria a mesma aparência para minhas sessões de Tmux do que eu tinha vindo a desfrutar em mais de 4 anos de Byobu. Então eu portado todo o código Byobu para funcionar igualmente bem com o Tmux como backend, como o Screen. A partir do Versão Byobu 5.0, O Tmux é agora o backend padrão, com o Screen ainda suportado em um modo legado. O Byobu agora aproveita muitos dos recursos modernos do Tmux over Screen, incluindo suporte de 256 cores amplamente aprimorado, caracteres UTF8 e divisão de janela horizontal / vertical.

Se você está satisfeito com as configurações padrão no Screen ou no Tmux, ou quer escrever seus próprios arquivos de configuração do zero, então, por todos os meios, Screen e Tmux como utilitários fantásticos que adicionaram muitos anos de eficiência às nossas vidas. Se você está interessado em um conjunto de configurações que realmente ampliam e estendem o que o Screen e o Tmux fazem fora da caixa, dê uma olhada no Byobu!

Felicidades, Dustin


236



Boa explicação. Incrível que a tela seja tão remendada - precisa de um novo mantenedor ou algo assim? E byobu é ótimo - obrigado. - nealmcb
Eu gostaria de poder votar duas vezes. Eu venho usando o byobu há anos e só recentemente soube da complexidade que tem me escondido de todo esse tempo. - Jamie Cook
Eu sempre uso CTRL+` as escape. With screen` e tmux isso funciona como um encanto, mas não com byobu(Debian 7.1 Wheezy) - Tino
Agora isso screen tem um novo mantenedor e o desenvolvimento parece ter acelerado, as coisas mudam? - muru
Não poderiam esses padrões opinativos torná-lo o projeto tmux mais novo? Parece que a resposta está faltando um parágrafo "Por que não contribuir para o projeto tmux?" xkcd.com/927 - user2707671


De um caso de uso real, a maior diferença entre screen e tmux é como eles lidam com janelas divididas.

Uma janela screen é um pseudo-terminal único. Quando ligado a um screen sessão, você pode dividir seu terminal em várias regiões, cada uma das quais pode exibir screen janela. Várias regiões podem exibir a mesma janela. As divisões não fazem parte da sessão; se você se separar, suas divisões desaparecerão.

Uma janela tmux consiste em um ou mais pseudo-terminais, um por painel. Isso significa que os painéis persistem se você desanexar e reconectar posteriormente. Isso também significa que você pode exibir apenas uma janela por vez em tmuxe os painéis não podem ser compartilhados entre várias janelas. tmux faz permitir uma janela para ser compartilhada entre várias sessões, no entanto.

Eu prefiro o modelo usado por tmux, mas eu não poderia argumentar que é melhor que o modelo usado por screen.


11



O argumento pro tmux é o Deutsche Bahn. Ande de trem rápido, tente trabalhar ssh usando uma conexão móvel e você verá rapidamente que o tmux modelo é muito superior, porque depois de uma das quebras de conexão freqüentes você não precisa reorganizar todos os painéis em seu jumphost após relogin. SCNR - Tino
Se você está enfrentando desconexões freqüentes, sugiro olhar para mosh que pode recuperar automaticamente do sinal perdido, ao contrário ssh - Ciprian Tomoiagă


Para mim, o dealbreaker para o tmux foi a implementação do compartilhamento de sessão.

No GNU Screen, se você permitir que outro usuário se conecte a uma sessão, ou simplesmente ter sua sessão conectada a mais de um terminal, eles podem operar independentemente (trocar telas em uma sessão A do terminal B não faz o terminal A sessão A).

O acima não é o caso do tmux (ainda?) Ou eu não consegui encontrar uma maneira de mudar o comportamento ainda.

Se alguém souber de uma maneira de alterar esse comportamento no tmux ou se o tmux atualizar para alterar esse comportamento ou dar a opção de alterar agora esse comportamento, por favor, deixe um comentário.


3



tmux tem uma noção de sessões "ligadas" com new-session -t shared. Janelas de 'shared' aparecem na nova sessão, novas janelas em uma aparecem na outra, e fechar uma janela em uma fecha na outra. No entanto, a janela que cada cliente vê é específica da sessão real que ela anexa. - chepner