Como Usar o tmux no Linux (e Porque É Melhor do Que a Tela de)
- Dave McKay
@TheGurkha
- 14 de Maio de 2020, 8:00 am EDT
O Linux tmux
comando é um multiplexador de terminal, como o screen
. Seus defensores são muitos e vocais, então decidimos comparar os dois. É tmux
realmente melhor, ou é apenas um caso de preferir o que você sabe?
tmux vs. screen
ambos os comandos tmux
e GNU screen
são multiplexadores terminais. Eles permitem que você tenha várias janelas dentro de uma única janela terminal, e para saltar para trás e para a frente entre eles. Uma janela pode ser dividida em painéis, cada um dos quais lhe dá uma linha de comando independente.
você também pode separar uma sessão e ela se torna uma entidade sem cabeça rodando em segundo plano-você pode até fechar a janela terminal que a lançou. Quando estiver pronto, pode abrir uma nova janela de terminal e voltar a ligar a sessão ainda em execução. Você também pode fazer isso através de uma conexão SSH.
você pode destacar uma sessão em um computador, ir para casa, e entrar no computador remoto. Quando reconectado, você pode voltar a ligar a sessão de fundo e usá-lo interativamente novamente.Qual é o comando do ecrã?
o comando screen
também é um multiplexador de terminal, e está repleto de opções. Para saber tudo o que pode fazer com ele, veja o nosso artigo em profundidade.Desta vez, vamos concentrar-nos em tmux
. À medida que avançamos, mencionaremos como screen
lida com o mesmo recurso ou função.
apenas uma coisa nos irritou com screen
. Vamos cobrir isso quando chegarmos a ele, e ver se tmux
está melhor.
RELACIONADOS: Como Usar o Linux a tela de Comando
Instalar o tmux
Enquanto screen
geralmente é instalado por padrão em populares distribuições Linux, tmux
não. Para instalar tmux
no Ubuntu, digite o seguinte:
sudo apt-get install tmux
No Manjaro você pode usar pacman
:
sudo pacman -Sy tmux
No Fedora 31, tmux
já está instalado.
iniciando uma sessão de tmux
para iniciar tmux
, digite apenas e bata Enter:
tmux
a janela do terminal irá mostrar uma barra de estado quando estiver numa sessão tmux
.
o lado direito da barra de estado mostra o nome da máquina, a hora e a data. O lado esquerdo mostra a seguinte informação relacionada com a sessão:
- : este é o nome da sessão. Por padrão, eles estão numerados, começando com zero. Nós cobrimos como você pode dar nomes significativos para as sessões abaixo.
- 0:bash*: o 0 indica que esta é a primeira janela desta sessão. O único processo em execução nesta sessão é
bash
. Se você executar um programa, seu nome aparecerá aqui. O asterisco ( * ) significa que esta é a janela que você está olhando. Cada vez que cria uma nova janela numa sessãotmux
, o seu número de janela e o nome do programa que está a correr nela são adicionados à barra de Estado.
o comando screen
não lhe dá uma barra de Estado. Tens de voar às cegas e confiar na tua inteligência para saber o que se passa, o que requer um pouco de prática.
no lado positivo, você não vai perder uma linha de terminal janela imóveis. Claro, você normalmente expandiria sua janela de terminal para fazer com que o uso de um multiplexador de terminal valesse a pena. Nesse caso, a perda de uma linha para a barra de status não é muito de um problema. Deixámos as imagens das janelas do terminal aqui no tamanho padrão para que possa ver a informação.
comandos são dados a tmux
usando teclas, e há duas partes para isso. Primeiro, carrega em Ctrl+B para chamar a atenção de tmux
. Em seguida, pressione rapidamente a próxima tecla para enviar um comando paratmux
. Os comandos são dados carregando em letras, números, marcas de pontuação ou teclas de cursores.
é o mesmo em screen
, excepto se carregar em Ctrl+A para chamar a sua atenção.
para fechar a janela, carregue em Ctrl+B e depois carregue rapidamente em X. A barra de Estado torna-se âmbar. Você é então solicitado a confirmar que você quer matar a janela.
Pressione Y para fechar a janela ou n Se mudar de ideias. Você não tem que pressionar Enter depois; Y ou N é suficiente para registrar sua escolha.Se carregar em Y, a janela fecha-se. Como esta é a única janela nesta sessão, a sessão é terminada.
a sessão tmux
está fechada e é devolvido à linha de comandos a partir da qual lançou tmux
. Vais ver “” na janela do terminal.Pode parecer que está a afirmar o óbvio, mas é uma confirmação de que fechou a sessão e não a deixou desligada e em execução. Discutiremos as sessões de separação abaixo.
iniciando uma sessão tmux nomeada
se começar regularmente várias sessões tmux
, irá apreciar rapidamente a funcionalidade de dar a cada uma delas um nome significativo. Você pode nomear sessões em screen
, também, mas elas não são exibidas em qualquer lugar nas janelas de sessão.
para iniciar tmux
com um nome de sessão, use o comando new
(nova sessão), e a opção -s
(nome da sessão). A nossa sessão vai ser chamada de “geek-1”, por isso escrevemos o seguinte::
tmux new -s geek-1
quando as cargas de sessão tmux
,” geek-1 ” é apresentado como o primeiro item na barra de estado, à esquerda.
adicionando mais janelas
para criar uma nova janela na sessão actual, carregue em Ctrl+B e, em seguida, C. irá obter uma janela de terminal em branco na sessão actual. Então teremos algo correndo nesta nova janela, vamos iniciar o comando dmesg
com a opção -w
(seguir) :
dmesg -w
agora temos duas janelas na sessão; uma está rodando top
, e a outra dmesg
. Só podemos ver um de cada vez, porém (mais sobre isso em um momento).
dê uma olhada no lado esquerdo da barra de Estado. Ainda estamos na sessão” geek-1 ” tmux
. Na janela zero, o topo está em execução, e na janela um, dmesg
está em execução. O asterisco ( * ) depois de dmesg
nos diz qual janela é visível.
para saltar entre as janelas, carregue em Ctrl+B e depois numa das seguintes teclas:
- n: Mostra a próxima janela.
- P: mostra a janela anterior.
- 0 a 9: mostra uma janela numerada de 0 a 9.
pode também escolher uma janela a partir de uma lista. Se carregar em Ctrl+B e depois W, irá aparecer uma lista de janelas.
para mover a barra de realce âmbar, pressione as setas para cima ou para baixo, para casa ou para o fim. A secção inferior da visualização mostra uma antevisão do conteúdo na janela seleccionada.
Carregue em Enter para mover para a janela seleccionada, ou Esc para sair da lista de janelas sem mudar de assunto.Se carregar em Ctrl+B E depois D, irá desligar a sessão. Ele vai continuar a correr em segundo plano, mas você não será capaz de ver ou interagir com ele.
começamos top
na sessão então temos um processo em execução para demonstrar com. Depois, carregamos em Ctrl+B, E depois D. a sessão desaparece e torna-se uma sessão de fundo.
voltamos à janela do terminal original. Há uma mensagem de tmux
a dizer-nos que a sessão está desligada. Recorda-nos também o nome que demos à sessão. Isto é útil porque é o que usamos para anexar a uma sessão de fundo, e, em seguida, restaurá-lo a um interativo.
para anexar uma sessão separada, usaremos o comando auto-explicativo attach-session
com a opção -t
(sessão alvo). Também forneceremos o nome da sessão que queremos recordar.
nós digitar o seguinte:
tmux attach-session -t geek-1
nossa sessão retorna e se torna uma sessão visível e interativa novamente.
quaisquer processos de longa duração ou contínuos que tenha iniciado antes de desligar a sessão, continuarão a correr em segundo plano (a menos que tenham terminado) quando anexar a sessão.
screen
pode fazer isso, mas não como intuitivamente.
Tratamento de Várias Sessões
Vamos abrir outra janela de terminal e iniciar um novo tmux
sessão chamada “geek-2”:
tmux new -s geek-2
nessa sessão, vamos começar dmesg
:
dmesg -w
Agora, nós temos a nossa “original” geek-1″ tmux
sessão, e um novo chamado “geek-2.”
a barra de estado mostra-nos que esta sessão é chamada “geek-2”, e tem uma janela que está a correr dmesg
.Se carregarmos em Ctrl+B, E depois D, destacamos essa sessão.
de volta na sessão” geek-1 ” tmux
, pressionamos Ctrl+B, E então S para ver uma lista de tmux
sessões.
para ser claro, esta é uma lista de sessões. A exibição similar que vimos anteriormente era uma lista de janelas em uma única sessão.
pode mover a barra de realce âmbar pressionando as setas para cima e para baixo, Home e End. A secção inferior mostra uma antevisão do conteúdo na sessão seleccionada.
se carregar na seta para a direita, as janelas para a sessão seleccionada são apresentadas.
pressione Enter para mover para a sessão realçada ou janela ou Esc para sair da lista de sessões sem alterar as sessões. Se Seleccionar uma nova sessão, a sua actual distancia-se e a que seleccionou é anexada.Separámos a sessão “geek-2” antes de fazermos isto. No entanto, você pode fazer isso com sessões que ainda estão ligadas às suas janelas de terminal originais. Quando o fizer, quaisquer alterações de ecrã irão aparecer simultaneamente em ambas as sessões tmux
.
o comando screen
também pode fazer isto, através de um conjunto semelhante de comandos.
trabalhando com painéis de janelas
se carregar em Ctrl+B, e depois em aspas duplas (“”), irá dividir a janela horizontalmente em duas janelas.
isto só afecta a janela actual; os outros na sessão não serão alterados. Nós usamos o comando tmux ls
na área superior para listar as janelas nesta sessão. Há dois, e a linha de Estado diz-nos que estamos na janela um. Se saltarmos para a janela zero, carregando em Ctrl+B, e depois 0 (zero), vemos que é exactamente como o deixámos.
estas são duas linhas de comando independentes, Não duas vistas numa janela; são conchas distintas e separadas. Podemos mostrar isto executando um comando diferente em cada painel.
nós digitar o seguinte:
uname -a
ls -hl
para passar de uma área para outra, carregue em Ctrl+B, e depois na seta para cima, para baixo, para a esquerda ou para a direita.
se carregar em Ctrl+B, e depois o sinal percentual (%)
divide a área actual verticalmente.
pressione Ctrl+B, E depois Q para fazer tmux
brevemente piscar o número de cada painel.
estes números são usados em indicações e mensagens de tmux
. Carregue em Ctrl+B e depois em X para fechar a área actual. A barra de estado muda para âmbar, e você é solicitado a confirmar que você quer fechar esse número de painel. Pressione Y para remover o painel, ou N para deixar as coisas como estão.Se carregar em Y, a área é removida.
o comando screen
também tem painéis, mas, novamente, eles são menos intuitivos de usar. O que nos irrita em relação ao screen
é que, se separarmos uma sessão com o panes, eles desaparecem quando recolocamos essa sessão. Isto envelhece muito depressa.
A Ctrl+B Cheat Sheet
incluímos uma “cheat sheet” dos diferentes comandos que pode usar em tmux
abaixo.
comandos de sessão
- S: sessões de Lista.
- $: mudar o nome da sessão actual.
- D: destacar a sessão actual.
- Ctrl+B, E depois ?: Mostra a página de Ajuda em
tmux
.
comandos da janela
- C: criar uma nova janela.
- ,: Mudar o nome da janela actual.
- W: listar as janelas.
- N: mover para a próxima janela.
- P: mover para a janela anterior.
- 0 a 9: mover para o número da janela indicado.
comandos do Painel
- %: criar uma divisão horizontal.
- “: criar uma divisão vertical.
- H ou seta para a esquerda: Mover para a área à esquerda.
- I ou seta para a Direita: Mover para a vidraça à direita.
- J ou seta para baixo: mova-se para a área abaixo.
- K ou seta para cima: mova-se para a área acima.
- Q: mostra brevemente os números das vidraças.
- o: mover através de painéis em ordem. Cada imprensa leva-te para a próxima, até passares por todas elas.
- }: trocar a posição da área actual com a seguinte.
- {: trocar a posição do painel actual com a anterior.
- X: fechar a área actual.
como eles comparam
em termos de funcionalidade, screen
e tmux
ambos apresentam similarmente e oferecem as mesmas características principais. É a forma como você acede a essas características que é marcadamente diferente. tmux
oferece ao slicker, formas mais confortáveis de chegar às várias funções. No entanto, essa não é a única diferença.
a capacidade de mudar o nome das sessões e janelas em tmux
é puro, e o fato de que ele retém os painéis quando você recoloca uma sessão é uma mudança de jogo.
screen
, por outro lado, perde completamente o panes quando se separa e recoloca uma sessão. Isto é quase irritante o suficiente para fazer você evitar a separação em primeiro lugar.
há muito mais para tmux
, incluindo suas capacidades de scripts incrivelmente flexíveis. Deves a ti próprio verificar.