Byobu vs. GNU Screen vs. tmux - utilidade e transferibilidade de habilidades [fechado]

95

Até agora, usei o Konsole para gerenciar várias sessões de shell, mas ainda não experimentei o Byobu , o GNU Screen e o tmux , que oferecem melhor suporte para vários shells. Todos eles compartilham um recurso principal, que é permitir desanexar a sessão atual e, posteriormente, recolocar na sessão antiga.

Para me ajudar a escolher uma ferramenta para aprender, eu 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 muito. Aprimoramentos são bem-vindos, mas não gosto de surpresas, como recursos que desaparecem.
  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 de shell interativos. Ainda posso usar vime emacs -nw(modo sem janela ou modo de texto) da mesma maneira que estou acostumado? Os atalhos do teclado entrarão em conflito com os de outras ferramentas?

Eu apenas tentei todos eles e o Byobu parece um tipo de front end para o GNU Screen e o tmux. Então, por que alguém criou o 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çado no GNU Screen? Se eu usar o Byobu como minha ferramenta diária com a tela GNU como back-end, posso transferir esse conhecimento para usar o GNU Screen sem o Byobu se uma determinada máquina tiver apenas o GNU Screen?

Keitai
fonte
1
Comentando minha própria pergunta. Depois de postar, vi 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
1
Como byobué apenas um garfo screencom recursos extras, a gnu-screentag se aplica.
grawity
2
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 back-end padrão. Se byobu é um fork da tela gnu, isso significa que o tmux é melhor que a tela gnu?
Keitai
1
Interessante, eu não sabia que ele suporta o tmux agora, embora continue sendo apenas um script de wrapper - nem mesmo um fork. Mas sim, o tmux é, de certa forma, melhor que o Screen (pelo menos, suas perguntas frequentes o fazem ).
grawity
22
Byobu não é um garfo de nada! É uma camada no topo do Screen e Tmux, semelhante ao Gnome / KDE sendo uma camada no topo do Xorg.
Dustin Kirkland

Respostas:

32

Para Tmux vs GNU Screen, leia

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

Alguns termos gerais que são frequentemente repetidos:

  • Tmux é mais recente. Isso significa que é um pouco mais sofisticado (divisão vertical simples, belas linhas verdes) e um pouco menos testado quanto à compatibilidade (por exemplo, de maneira desprezível de acordo com seus proponentes).
  • O Tmux é mais enxuto em recursos.
  • O GNU Screen é encontrado em todos os lugares e provavelmente é ainda mais usado.

Além disso, pode-se considerar 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 uso o Tmux.

Não achei que o Byobu tivesse nenhum "recurso matador" para mim. Ele fornece uma abstração na qual acredito que não é necessário para meus casos de uso.


Outra maneira de ver isso é notar que o Byobu pode usar o GNU Screen ou o Tmux como back-end, o que mostra que as diferenças em relação ao POV do usuário são principalmente superficiais.

Daniel Andersson
fonte
268

Ótima pergunta! Pelo que vale, sou o autor e mantenedor do Byobu .

O Byobu é uma camada de configuração, originalmente escrita para ficar em cima do GNU Screen , mas agora também funciona em cima do Tmux .

Comecei a escrever o Byobu em dezembro de 2008 , quando me encontrei com vários usuários de Screen e Ubuntu Server no Googleplex e descobri que todos nós mantivemos nosso próprio monte de hacks legais / divertidos / úteis em nossas ~/.screenrcconfigurações. E tivemos que mover manualmente aqueles entre as dezenas ou centenas de servidores que usamos. Começamos a negociar dicas e truques e comecei a colecioná-los no projeto original da GPLv3 chamado "screen-profiles". Cerca de seis meses depois, uma comunidade inteira se desenvolveu em torno de " perfis de tela " e o projeto se tornou muito mais do que apenas hacks de tela - tínhamos utilitários de configuração, plug-ins de status ao vivo e combinações de teclas. Então, renomeamos o projeto "Byobu", que é uma palavra japonesa para aquelas "telas" dobráveis ​​e elegantes, e tem o benefício adicional de poder pesquisar com mais sucesso o Google por "Byobu $ FOO" do que "Screen $ FOO".

Com o Byobu agora na maioria das distribuições Linux ( Ubuntu , Debian , Fedora , Arch ) e funcional na maioria dos Macs / BSDs e outros UNIXes, ele fornece as mesmas combinações de teclas convenientes e com aparência, informações dinâmicas do status do sistema em qualquer terminal precisa acessar.

Por que não contribuir de volta ao projeto GNU Screen? Um par de razões ... Tudo o que o Byobu funciona tão bem quanto as opções de configuração. Nada disso precisa ser incluído na base de origem da Tela para ser funcional. Algumas coisas podem funcionar melhor ou ter um desempenho melhor se a Screen incluí-las por padrão, mas muitas das alterações são muito "opinativas", que geralmente são difíceis ou impossíveis de contribuir para um projeto upstream de 25 anos . Além disso, o projeto GNU Screen está se movendo muito lentamente, se houver. Tem mais de 25 anos e não tem um lançamento oficial desde agosto de 2008 . Toda distribuição está carregando pilhas enormes de patches apenas para manter sua / usr / bin / tela funcionando e segura. por exemplo, o Ubuntu e o Debian estão atualmente carregando 19K linhas de código em ~ 48remendos .

Eu aprendi sobre o Tmux há cerca de 2 anos e 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 Tmux e discutindo tópicos na lista de discussão. E como usuário do Byobu que o usa em todos os lugares, eu queria a mesma aparência em minhas sessões do Tmux do que eu havia desfrutado em mais de 4 anos de Byobu. Então eu portado todo o código Byobu funcionar igualmente bem com tmux como o back-end, como a tela. Desde o lançamento do Byobu 5.0 , o Tmux agora é o back-end padrão, com o Screen ainda suportado no modo legado. O Byobu agora aproveita muitos dos recursos modernos do Tmux over Screen, incluindo suporte para 256 cores amplamente aprimorado, caracteres UTF8 e divisão de janelas horizontal / vertical.

Se você está satisfeito com as configurações padrão no Screen ou no Tmux, ou deseja gravar seus próprios arquivos de configuração do zero, então, o Screen e o Tmux são 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 ampliam o que o Screen e o Tmux fazem fora da caixa, dê uma olhada no Byobu!

Cheers, Dustin

Dustin Kirkland
fonte
16
Boa explicação. Surpreendente que a tela seja tão fortemente corrigida - ela precisa de um novo mantenedor ou algo assim? E byobu é ótimo - obrigado.
Nealmcb
10
Eu gostaria de poder votar duas vezes. Uso o byobu há anos e só recentemente soube da complexidade que me oculta todo esse tempo.
21313 Jamie Cook
2
Eu sempre uso o CTRL+` as escape. With screen` e tmuxisso funciona como um encanto, mas não com byobu(Debian 7.1 Wheezy).
Tino
1
Agora que screentem um novo mantenedor e o desenvolvimento parece ter ganhado força, as coisas mudam?
Muru
Esses padrões opinativos não poderiam torná-lo o projeto tmux mais jovem? Parece que está faltando um parágrafo na resposta "Por que não contribuir de volta para o projeto tmux?" xkcd.com/927
user2707671
12

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

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

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

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

chepner
fonte
3
O argumento pro tmuxé o Deutsche Bahn . Pegue um trem rápido, tente trabalhar sshusando uma conexão móvel e você verá rapidamente que o tmuxmodelo é muito superior, porque após uma das frequentes interrupções na conexão, você não precisa reorganizar todos os painéis do seu jumphost após o login novamente. SCNR
Tino
3
se você está enfrentando desconexões freqüentes, sugiro olhando para mosh que pode recuperar automaticamente de sinal perdido, ao contráriossh
Ciprian Tomoiagă
4

Para mim, o negócio para o tmux foi a implementação do compartilhamento de sessões.

No GNU Screen, se você permitir que outro usuário se conecte a uma sessão, ou simplesmente tenha sua sessão conectada a mais de um terminal, eles podem operar de forma independente (alternar telas em uma sessão A do terminal B não faz com que o terminal A também alterne as telas sessão A).

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

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

therealklanni
fonte
6
tmuxtem uma noção de sessões "vinculadas" com new-session -t shared. Janelas de 'compartilhado' aparecem na nova sessão, novas janelas em uma aparecem na outra e fechar uma janela em uma fecha a outra. No entanto, qual janela cada cliente vê é específica para a sessão real que ele anexa.
chepner