Questão tmux vs. tela


Estou prestes a voltar a usar Tela GNU, mas eu tenho ouvido pessoas mencionarem ocasionalmente tmux como uma alternativa melhor. Isso realmente oferece uma alternativa para todos os recursos Tela ofertas, como monitoramento de atividades em diferentes janelas, etc.? Quais são os prós e contras de cada um?


212


origem


Também discutido em unix.stackexchange.com/questions/549/tmux-vs-gnu-screen - Lloyd Dewolf
Na tela você pode enviar comandos para uma sessão anexada via screen -S automate_me -X stuff 'command'$(echo -ne '\015') você não pode no tmux. Bastante útil se você estiver testando uma imagem / ISO da caixa virtual e precisar fazer alguns comandos remotamente rapidamente. Por exemplo, eu tenho isso em um comando Vim para depurar rapidamente os scripts em uma tela do VirtualBox. Nas versões anteriores do tmux, descobri que a tela manipulava mais texto passando rapidamente, enquanto o tmux travava. Também tela não requer qualquer configuração para lidar com UTF-8 etc. tmux faz. - dezza


Respostas:


Algumas das razões (principais) que eu prefiro tmux sobre screen:

  • Barra de status é muito mais fácil de usar. Você pode facilmente configurar textos / estilos diferentes para a janela atual, janelas com atividade, etc. e pode colocar itens à esquerda e à direita da barra de status, incluindo comandos shell que podem ser executados em um intervalo especificado (15s padrão).
  • Quase qualquer comando que você pode executar dentro tmux pode ser executado a partir de um shell com tmux command [args]. Isso facilita muito a criação de scripts, além de facilitar a execução de comandos complexos.
  • Renomeação de janela automática muito mais precisa. Enquanto screen define o título com base na primeira palavra do comando e requer que a configuração do shell faça mesmo isso em uma janela do shell, tmux rastreia quais processos estão realmente sendo executados em cada janela e atualiza o título de acordo. Dessa forma, você obtém renomeação dinâmica com qualquer configuração shell e zero. Por exemplo: digamos que você esteja executando o Z Shell; o nome da janela seria "zsh". Agora vamos dizer que você quer editar algum arquivo de configuração, então você digita sudo emacs /etc/somefile. Enquanto o sudo está pedindo sua senha, o nome da janela será "sudo", mas uma vez que você tenha feito isso e sudo lançamentos emacs, o título será "emacs". Quando tudo estiver pronto e você sair emacs, o título mudará de volta para "zsh". Isso é muito útil para manter o controle das janelas, e também pode ser especialmente útil em situações específicas, como se você tivesse algum processo de execução longa em outra janela que, ocasionalmente, solicita a entrada usando dialog; o nome da janela mudaria para "caixa de diálogo" quando isso acontecesse, então você saberia que tinha que mudar para aquela janela e fazer alguma coisa.
  • Tratamento de sessão mais agradável (IMHO). Você pode fazer muito mais com sessões dentro tmux em si. Você pode facilmente mudar, renomear, etc, e você pode mover e compartilhar janelas entre as sessões. Ele também possui um modelo diferente, em que cada usuário possui um servidor que controla suas sessões e ao qual o cliente se conecta. A desvantagem disso é que, se o servidor travar, você perderá tudo; Eu nunca tive a falha do servidor em mim, no entanto.
  • tmux parece ser mais ativamente desenvolvido. Há atualizações com bastante frequência e você pode arquivar um relatório de bug ou solicitação de recurso de acordo com este FAQ e obtenha uma resposta dentro de alguns dias.

Essas são apenas as principais coisas que vêm imediatamente à mente. Há outras pequenas coisas também, e tenho certeza de que estou esquecendo algumas coisas. Definitivamente vale a pena dar tmux uma tentativa, no entanto.


140



O desenvolvimento do tmux é mais ativo porque é Novo. A tela do GNU é quase 25 anos de idade, então eles consertaram a maioria dos bugs. - a paid nerd
o comentário de um nerd pago é uma qualificação muito importante do seu último ponto. E o segundo ponto, como afirmado, não é realmente uma diferença, já que se aplica à tela, a menos que você possa ser mais específico. - jw013
@a pagou nerd: techrepublic.com/blog/opensource/is-tmux-the-gnu-screen-killer/… - sjas
@apaidnerd é uma afirmação muito rica: savannah.gnu.org/bugs/… - Błażej Michalik


(Sessões são coleções de janelas que pode ser desanexado e reconectado posteriormente. O Windows pode conter um ou mais painéis. Por exemplo, configurações, confira Aqui e Aqui.)

tmux

  • Prós
    • Pode enviar chaves para outros painéis, como uma IDE
    • Keybindings fáceis - com a configuração certa, você se sentirá em casa com o Vim ou o Screen
    • Ligações Vim-ish e Emacs-ish incorporadas
    • Bom gerenciamento de layout, muito parecido com um gerenciador de janelas lado a lado
    • Unicode parece funcionar apenas com terminais modernos
    • Alguns problemas de terminal corrigidos com TERM=tmux
  • Contras
    • Lento - não tem certeza do porquê, mas as teclas parecem lentas Não há mais problemas com lentidão
    • A multiplexação força a largura e a altura da sessão inteira ao menor terminal conectado
    • Caiu várias vezes no Mac OS X, perdendo a sessão inteira
    • Falhou no Linux após a atualização, onde não consegui me reconectar à minha antiga sessão
    • Ocorre falta de teclas de comando ocasionalmente - ^ A ^ [ leva algumas tentativas para o modo de cópia
    • Não é possível mover um painel de uma janela para outra Corrigido com o join-pane comando
    • Nenhuma linha desembrulhando (ou "refluxo" ou "reenrolamento") após a mudança da largura do terminal (redimensionamento da janela)

Tela GNU

  • Prós
    • Extremamente estável (v1.0 foi em 1987)
    • Alguns problemas de terminal corrigidos com TERM=screen
    • Ligações Emacs-ish embutidas
    • Fácil de mover e controlar painéis horizontais
    • Quando multiplexando, qualquer terminal conectado pode redimensionar um painel
  • Contras
    • Sem divisões verticais sem patch (exceto no Ubuntu)
    • As divisões de painel são perdidas ao desconectar
    • Fazer o Unicode funcionar exige um pouco de finesse e determinação
    • Configuração de linha de status louco

84



As teclas digitadas são apenas quando se pressiona Esc? O tmux tem um atraso onde ele aguarda para ver se você está digitando uma sequência xterm ou apenas uma Esc única, e combinado com o vim, pode parecer muito lento. Defina o tempo de escape para um valor menor como 50. - Eevee
Também é engraçado você dizer ^A ^[ não funciona às vezes; Eu tenho o mesmo problema com a tela, mas nunca tmux! E eu acredito que você pode mover painéis ao redor com join-pane. - Eevee
Eu acho que a tela usa muito mais memória, o que poderia ser incluído como uma desvantagem. - paradroid
Bem, tmux suga com vim, em alguns casos (o meu é), nenhuma solução já postou em qualquer lugar funciona, e até mesmo pessoas gastando algum tempo resolvendo a questão da minha não foram capazes. É chato quando você não pode usar <C-Left> e <C-Right> dentro vim. - yo'
No vertical splits without patch (except on Ubuntu) Eu não acho que isso seja verdade. Eu venho usando a tela há alguns anos e nunca tive nenhum problema de divisão horizontal ou vertical no Debian e no Fedora. Mesmo no Android com o Termux, funciona como um encanto. - Forivin


Um pro para tela: está disponível praticamente pronto para uso no Linux e no Solaris. Quando você tem que alternar entre as plataformas, é bom não ter a troca de contexto mental.

Tenho certeza que você pode obter o tmux compilado em qualquer plataforma, mas às vezes você tem acesso suficiente para usar a tela, mas os administradores reais do sistema não querem realmente adicionar nenhum software que não seja absolutamente necessário.


9





As coisas que eu saio do tmux eu não entendo facilmente na tela são:

  1. fazer divisórias verticais
  2. multiplexação, que usamos para emparelhamento remoto e local.

8



Não faz multiplexação de suporte de tela com o -x opção e acladd? - poolie
Como mencionado anteriormente, a tela tem divisões no painel vertical (requer um patch w / o Ubuntu, aparentemente). Além disso, multiplexação funciona bem e tem por muitos anos. - EntangledLoops
divisões verticais foram na linha principal screen desde 4.2, lançado em 2014. Muitas distribuições muito versões antigas, especialmente a Apple. - Neal Fultz
Ambos os pontos estão incorretos. - Forivin


Eu uso o tmux há cerca de dois dias, então meu entusiasmo desenfreado por ele ainda não foi atenuado por casos de uso irritantes. Ao passar pelas costumeiras dificuldades de fazer a transição de um programa para outro, fiquei impressionado com várias características positivas, mas o recurso que me faz acreditar que nunca voltarei à tela é o utilitário do modo copiar e colar. Na tela, você não pode entrar no modo de cópia, rolar para trás no buffer e depois ir para outra janela. No tmux, você pode ter várias janelas simultaneamente no modo de cópia com o buffer rolado de volta para diferentes posições. Além disso, existem vários buffers de cópia. E você não precisa corrigir a fonte para obter o movimento do cursor fFtT.


7





Eu substituí Tela GNU com tmux em todos os casos de uso, exceto um - quando preciso de um Hiper terminal equivalente a conectar-se a portas seriais. Como Aaron Toponce observou em seu artigo "Conectando a Modems Nulos Seriais com a Tela GNU", a FAQ do tmux estados:

tela possui suporte serial e telnet; isso é inchado e é improvável     para ser adicionado ao tmux.

Meu típico tmux O caso de uso é para criar sessões de desenvolvimento com vários painéis e várias janelas em combinação com tmuxinador. Se você quer aprender tmux, Eu recomendo pegar o livro de Brian P. Hogan, tmux: desenvolvimento produtivo sem mouse.


4





Eu diria que a disponibilidade da tela é sua força, mas seu sistema de janelas não é tão fácil de lidar quanto 'S Devo dizer que eu uso  na maioria das vezes no presente e como resultado, tem muitas abas de terminal em vez de janelas de tela.

@Jed Schneider: Você pode obter divisões de painéis verticais com Ctrl+UMA e depois | (Barra vertical).


1





Um dos mantenedores do tmux, Thomas Adam, também é listado como mantenedor do screen projeto embora ele apenas toca código tmux, que é enorme pro do tmux ao longo do ecrã.


0





Alguém considerou que você tem menos probabilidade de perder a tela de execução da sessão, dependendo de como você a usa?

Eu tenho aprendido o tmux nos últimos dias e realmente gostei, especialmente a incrível personalização que pode ser feita em ~ / .tmux.conf.

Mas me ocorreu, com tela, pelo menos da maneira que eu uso mais, sessões ao vivo na máquina remota em que estou exibindo a tela. Normalmente, para executar um comando de longa duração que eu posso então separar e voltar para mais tarde. Eu só raramente corro tela localmente a partir da minha estação de trabalho para me conectar a outros hosts.

Com o tmux, pelo menos da maneira que eu mais uso, ele e suas sessões conectadas estão sendo executadas localmente em minha estação de trabalho.

Se minha estação de trabalho perder sua conexão, imagino que o tmux elimine conexões com todos os servidores aos quais eu estava conectado?

Eu suponho que poderia ser um pro para a tela sobre o tmux, dependendo de como você o usa?


-3



Isso foi uma pergunta ou uma resposta? A finalidade de ambos - screen e tmux é não usar o descritor do arquivo de terminais (stdin, stdout, stderr) atribuído à conexão particular pelo sistema operacional, é por isso que ambos podem sobreviver à interrupção da rede e continuar a executar. Se você configurar conexões externas do tmux / screen para recursos remotos e essas conexões forem quebradas, isso não está relacionado ao tmux / screen, já que ambos não podem controlar tais coisas. Eu sugiro que você edite sua resposta se você não quiser ser sinalizado, já que a resposta deveria responder a uma pergunta - Alex