olás. como começar a escrever sobre o screen
? ele tem tantas vantagens e seu uso pode ser para tantos fins diferentes que realmente é difícil encontrar um ponto de partida. por definição, ele é um gerenciador de console que cria "janelas" e permite toda sorte de facilidades e interações entre elas, como alternar, copiar, colar, monitorar, capturar, travar, dividir, redimensionar, interromper, guardar, restaurar e destruir.
então com apenas um acesso ("login") na máquina, você pode ter várias janelas, independentes, cada uma com seu próprio ambiente, como no X
. o efeito é parecido com ter várias seções abertas nos alt+F1
, alt+F2
da vida, mas sem precisar ficar informando usuário e senha a cada seção nova e com possibilidade de interação total entre elas.
essa "janela", não é gráfica ou visual, portanto o modo texto continua o mesmo de sempre, em tela cheia. se preferir, você pode sacrificar a última linha da tela para ter uma "barra de tarefas", podendo colocar nela a data, horário, informações de consumo de memória e CPU da máquina, e nomes para cada janela criada. vale a pena, é muito útil.
bem, vamos dar uma brincada com ele então? a página do programa está em http://www.gnu.org/software/screen, mas ele também vem com a grande maioria (todas?) das distribuições de linux, procure na sua. instalado o programa, simplesmente o chame na linha de comando:
$ screen
apareceu uma tela de boas-vindas. aperte ENTER
. pronto, este é o screen
! apareceu nada? então está certo &:) como já dito, ele é tela cheia, então não interfere na aparência de seu console, mas já está funcionando. para saber os comandos mais usados, digite ctrl+a ?
. este ctrl+a
é a tecla-chave do screen
e precede todos os seus comandos. esta combinação será referenciada como ^a
daqui adiante, então ^a ?
é a ajuda, use-a sempre que precisar.
primeiramente, para ficar mais "visual" o processo de criação e troca de janelas, vamos colocar a "barra de tarefas". como o vi
, o screen
tem uma linha de comando própria, para aceitar comandos literais ou que recebem parâmetros, invocada pelo comando :
. então, primeiro chame a linha de comando com o ^a :
(veja a linha láááá embaixo) e digite hardstatus alwayslastline "%c %w"
. agora temos uma barra permanente com o horário e as janelas abertas, por enquanto apenas uma "0* bash", sendo zero o número da janela, o asterisco indica que é esta a janela ativa e "bash" é o nome desta janela.
para Criar uma janela nova, ^a c
. note que ela apareceu na barra lá embaixo também, com o número 1 e com o mesmo nome da janela anterior. para não confundir, vamos trocar o nome desta janela: ^a A
(note que é um "a" maiúsculo), e aparecerá um prompt para você digitar o nome novo da janela, suponhamos "www", e nesta janela você chama o lynx
para navegar.
para Alternar entre duas janelas (igual com os canais da tv), ^a ^a
. este além de útil no uso diário é bom para se ter um diff
bem visual entre dois arquivos, abrindo um em cada janela e simplesmente segurando o ^a
até cansar.
crie uma terceira janela ^a c
, e a nomeie como "email" por exemplo. agora vamos ver mais de uma janela simultaneamente na tela ("Split"), apertando ^a S
para dividir a tela em 2 partes. para mais partes, siga apertando ^a S
até se satisfazer. ao dividir a tela, a janela atual fica na parte de cima e na parte debaixo, NÃO há janelas, ela se inicia vazia. então vamos com o cursor para a parte de baixo ^a TAB
e colocar a janela do lynx
(que tem número 1) nela ^a 1
. quer voltar para a parte superior? ^a TAB
novamente.
se por acaso você apertou por engano ^a s
, com o "s" minúsculo, verá que a tela "congelou". basta apertar ^a q
pra ela se descongelar. esta é a função de "scroll lock", igual como apertar a tecla de mesmo nome do teclado. ela é praticamente inútil pois o próprio ctrl+s
já faz isso (além de existir a tecla física), então podemos anular este comando para evitar apertá-lo sem querer: ^a :bind s
, ou ainda redefini-lo para outra função qualquer: ^a :bind s help
. e assim pode-se anular ou redefinir qualquer outro comando. e note que ao consultar a ajuda, suas redefinições aparecerão lá!
para voltar à tela cheia, ^a Q
"maximizará" a tela ativa, voltando à condição anterior à da divisão. cada janela desaparecerá normalmente quando você der o "logout" do shell
, ou para forçar, ou melhor dizer, "matar" uma janela, ^a k
. muito útil caso você tenha rodado algum programa que travou na tela. ao invés de ir numa outra console, ter que descobrir o PID
dele e dar um kill -9
, simplesmente mate a janela e tudo o que estiver rodando (ou zumbi) nela será morto também.
ao sair da última janela, o screen
também se encerrará e você volta ao shell
normal. ou melhor ainda, o screen
conta com o recurso de guardar uma seção, então você pode começar a baixar aquele arquivo gigantesco da internet no trabalho, guardar a seção do screen
("Detach") ^a d
, sair com seu usuário do sistema normalmente ("logout"), e dia seguinte, como todos os dias, você acessa o sistema ("login") e Restaura a seção screen
do dia anterior:
$ screen -r
mágica! os processos continuaram rodando durante a noite mesmo você não estando na máquina. essa funcionalidade de guardar e restaurar a seção é com certeza uma das melhores do screen
, e útil em várias situações onde você não pode estar o tempo todo acessando a máquina. se houver mais de uma seção guardada, um screen -ls
lhe listará as disponíveis.
e como última dica de hoje, para capturar a tela toda e gravar em um arquivo, ^a h
. o nome do arquivo gravado aparecerá no rodapé, algo como "hardcopy.1".
há listas de discussão em português (screen-br@yahoogroups.com) e em inglês (gnu-screen@yahoogroups.com) para usuários iniciantes e gurus.
na próxima coluna a continuação com dicas avançadas de uso, como copiar e colar texto sem o mouse, fazer monitoração de janelas, rodar programas automaticamente e ter um ~/.screenrc
incrementado.