As principais distribuições Linux tem como solução pra multi sessão o Screen, porem iremos apresentar o Tmux, um aplicativo com características muito superiores.
Tmux é um multiplexador de terminal, o que significa que você é capaz de ter um processo em execução, desconectar do sistema e reconectar posteriormente e de um computador diferente para que possa continuar trabalhando nesse processo. Uma maneira fácil de demonstrar isso é usar SSH para um sistema remoto, iniciar tmux e, a partir dele, iniciar um comando ping para um sistema remoto, desconectar tmux, retomar tmux e você verá que o ping ainda está funcionando. Alguns dos casos de uso comuns para isso são:
Se você tiver um processo de longa duração, como a atualização de um aplicativo, e não quiser deixar a sessão ssh em execução o tempo todo ou está preocupado com a possibilidade de sua conexão de rede cair.
Além disso, se você tiver várias sessões em execução, poderá usar rótulos para as diferentes sessões.
Se quiser que outra pessoa veja o que você está fazendo, você pode iniciar uma sessão tmux e, em seguida, fazer com que essa outra pessoa faça SSH em seu sistema e conecte-se a essa sessão tmux.
Instalação
Na versão 8 do RHEL ou AlmaLinux, foi tomada a decisão de descontinuar screen e usar em seu lugar o tmux como padrão. No CentOS 7 , voc deverá instalar manualmente o Tmux através do comando abaixo :
Iremos verificar se o tmux está disponível no repositório.
[root@srv030 afrare]# yum search tmux
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base: mirror-centos-jpa.hostdime.com.br
centos-sclo-rh: mirror-centos-jpa.hostdime.com.br
centos-sclo-sclo: mirror-centos-jpa.hostdime.com.br
epel: ord.mirror.rackspace.com
extras: mirror-centos-jpa.hostdime.com.br
remi-php71: mirror.pit.teraswitch.com
remi-safe: mirror.pit.teraswitch.com
rpmfusion-free-updates: mirror.math.princeton.edu
updates: mirror.turbozoneinternet.net.br
================================================ N/S matched: tmux =================================================
tmux-top.x86_64 : Monitoring information for your tmux status line.
tmux-top-devel.x86_64 : Monitoring information for your tmux status line.
tmux.x86_64 : A terminal multiplexer
xpanes.noarch : Awesome tmux-based terminal divider
Name and summary matches only, use “search all” for everything.
Verificamos que o tmux está disponível e iremos agora instalar propriamente o pacote.
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 27 kB 00:00:00
base: mirror-centos-jpa.hostdime.com.br
centos-sclo-rh: mirror-centos-jpa.hostdime.com.br
centos-sclo-sclo: mirror-centos-jpa.hostdime.com.br
epel: ord.mirror.rackspace.com
extras: mirror-centos-jpa.hostdime.com.br
remi-php71: mirror.pit.teraswitch.com
remi-safe: mirror.pit.teraswitch.com
rpmfusion-free-updates: mirror.math.princeton.edu
updates: mirror.turbozoneinternet.net.br
ajenti | 2.5 kB 00:00:00
base | 3.6 kB 00:00:00
centos-sclo-rh | 3.0 kB 00:00:00
centos-sclo-sclo | 3.0 kB 00:00:00
cheese | 3.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
remi-php71 | 3.0 kB 00:00:00
remi-safe | 3.0 kB 00:00:00
rpmfusion-free-updates | 3.7 kB 00:00:00
updates | 2.9 kB 00:00:00
z-push | 3.0 kB 00:00:00
(1/7): epel/x86_64/updateinfo | 1.0 MB 00:00:01
(2/7): extras/7/x86_64/primary_db | 236 kB 00:00:02
(3/7): remi-php71/primary_db | 246 kB 00:00:04
(4/7): rpmfusion-free-updates/x86_64/primary_db | 251 kB 00:00:04
(5/7): epel/x86_64/primary_db | 6.9 MB 00:00:07
(6/7): remi-safe/primary_db | 1.9 MB 00:00:10
(7/7): updates/7/x86_64/primary_db | 8.0 MB 00:00:18
Resolving Dependencies
–> Running transaction check
—> Package tmux.x86_64 0:1.8-4.el7 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================
Package Arch Version Repository Size
Installing:
tmux x86_64 1.8-4.el7 base 243 k
Transaction Summary
Install 1 Package
Total download size: 243 k
Installed size: 558 k
Is this ok [y/d/N]: y
Downloading packages:
tmux-1.8-4.el7.x86_64.rpm | 243 kB 00:00:05
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : tmux-1.8-4.el7.x86_64 1/1
Verifying : tmux-1.8-4.el7.x86_64 1/1
Installed:
tmux.x86_64 0:1.8-4.el7
Complete!
Usando Prefixos para Controlar Tmux
Tmux é baseado em comandos que performam tarefas específicas. Porém, para executar estes comandos, primeiro é preciso usar um prefixo. O prefixo informa ao Tmux que um comando será executado. Por padrão, o prefixo é CTRL+B.
Então o caminho certo para estruturar um comando Tmux é:
<prefix> + Command.
Ou seja, temos que pressionar as teclas CTRL + B e depois o comando. Por exemplo, para criar uma nova sessão, o comando seria C. Portanto, para criar uma nova sessão, precisamos pressionar CTRL + B e próximo C – CTRL + B, C.
Alguns Comandos Para Ajudar
Outro recurso fantástico do Tmux é que nós podemos “salvar” uma sessão específica. Por exemplo, se nós estamos usando htop e usamos o comando detach quando rodarmos o Tmux novamente, descobriremos que o processo ainda funciona. Isto é muito útil para performar comandos que levam mais tempo para rodar, como backups.
Então, vamos começar uma nova sessão digitando estes comandos na linha de comando:
tmux new
Nesta nova sessão, vamos rodar htop. Htop é uma ferramenta para monitorar os recursos do sistema.
Então, nós usamos o comando detach. Então, primeiro inserimos apertando CTRL+B e em seguida, o comando D. Vamos ver que teremos a próxima mensagem no terminal.
Agora precisamos voltar para nossa sessão “attach”. Para fazer isto, executamos o seguinte comando no terminal:
tmux attach -t [session_name]
Já que não temos um nome para a sessão, usaremos o valor 0. O comando será assim:
tmux attach -t 0
E voltaremos para nossa sessão anterior.
É possível fazer várias sessões com o comando C. Para navegar entre elas então vamos usar o número identificador. Por exemplo, a primeira sessão que criamos do terminal regular seria 0. Se nós criarmos outra sessão ela corresponderá ao número 1.
CTRL+B, 1
Nós podemos ver a sessão atual na barra verde na parte inferior da janela.
Podemos ver quantas sessões Tmux estão abertas com o seguinte comando:
tmux ls
Gerenciando Painéis
Vamos aprender como manipular painéis de terminais. Podemos dividir a janela horizontalmente, com o comando <prefix>, “
Ele teria que ser – CTRL+B, “.
E para fazer o mesmo, só que verticalmente – CTRL+B, %.
Para alternar entre painéis, podemos usar o comando – CTRL+B, arrow key.
E então podemos navegar por cada um dos painéis. Se quer fechar somente uma delas, pressione – CTRL+D.
Lista de Comandos Tmux
Finalmente, vamos compartilhar um arquivo para você usar como referência:
Sessões
Começar uma nova sessão | tmux |
Começar uma nova sessão com um nome | tmux new -s [name] |
Começar uma sessão anexada | tmux attach # |
Se a sessão tmux tiver nome | tmux attach -t [name] |
Listar todas sessões tmux | tmux ls |
Sair da utilidade | exit |
Lidar com Janela
Nova Janela | <prefix>+c |
Próxima Janela | <prefix>+n |
Listar todas as janelas | <prefix>+w |
Renomear uma janela | <prefix>+, |
Lidar com Painéis
Dividir painel na vertical | <prefix>+% |
Dividir painel na horizontal | <prefix>+“ |
Eliminar o painel | <prefix>+x |
Mostrar número do painel | <prefix>+q |
Alternar entre painéis | <prefix>+arrow key |
Conclusão
Como vimos, o Tmux é uma ferramenta importante que ajuda a usar o seu terminal de uma forma mais eficiente de abrir várias sessões.
O gerenciamento desta utilidade é feito através de comandos. Nós aprendemos os comandos mais básicos e úteis para o seu dia a dia de trabalho.
Abaixo mais alguns artigos interessantes sobre administração de um servidor Linux.