Como inicializo a tela com várias divisões diretamente da linha de comando?

10

Estou usando screen depois de logar com ssh no meu servidor. A partir de agora eu configurei as divisões na minha janela de tela com a mão e executei os comandos manualmente como mostrado na seguinte captura de tela:

  • A parte superior deve executar tail -n 1 -f /home/server/log/access.log .
  • A parte inferior direita deve executar htop
  • O inferior esquerdo deve ser simplesmente um prompt de comando

Existe alguma maneira de fazer isso através de comandos / script, então eu não tenho que refazer tudo manualmente?

    
por Videonauth 28.11.2017 / 02:15

2 respostas

14

Para o caso específico de organização de janelas, há um comando de tela para salvá-las em um arquivo: layout dump . De man screen :

layout dump [filename]

Write to a file the order of splits made in the current layout. This is
useful to recreate the order of  your  regions  used  in  your  current
layout.  Only  the  current  layout is recorded. While the order of the
regions are recorded, the sizes of  those  regions  and  which  windows
correspond  to  which regions are not. If no filename is specified, the
default is layout-dump, saved in the directory that the screen  process
was  started in. If the file already exists, layout dump will append to
that file. As an example:

           C-a : layout dump /home/user/.screenrc

will save or append the layout to the user's .screenrc file.

Então, uma vez que você faça o arranjo manualmente, pressione Ctrl a : , então digite layout dump /path/to/some/file . O layout será salvo em /path/to/some/file e você poderá restaurá-lo em uma nova sessão com:

screen -c /path/to/some/file
    
por muru 28.11.2017 / 02:45
8

Eu inventei o seguinte para criar a saída mostrada na minha pergunta e seguindo a excelente resposta do @ muru . Usando layout dump me deu o seguinte:

split
focus
split -v
focus
  

Observação: a expansão do til ( ~ ) não funciona com layout dump , em vez de ~/layout.dmp , por exemplo, você precisaria usar /home/<username>/layout.dmp .

A partir do qual eu criei o seguinte .screenrc

# create the top screen
chdir /home/server/log
screen -t "Apache Log" tail -n 1 -f access.log
# split the screen and focus onto the new created space
split
focus
#create the bash
chdir /home/server/log
screen
# split vertically and focus onto the new area
split -v
focus
# create the htop screen
screen -t "Htop" htop
# focus twice to end up with the bash area active
focus
focus

Agora só preciso digitar screen e começar meu layout desejado. Deixo isso aqui como um exemplo para aqueles que estão se perguntando, mas não se esqueça de votar na resposta de @ muru, já que ele é quem me fez capaz de resolver isso.

    
por Videonauth 28.11.2017 / 03:26