¿Cómo inicio la pantalla con múltiples divisiones directamente desde la línea de comando?

13

Estoy usando screendespués de haber iniciado sesión en sshmi servidor. A partir de ahora configuro las divisiones en mi ventana de pantalla a mano y ejecuto los comandos a mano como se muestra en la siguiente captura de pantalla:

ingrese la descripción de la imagen aquí

  • La parte superior debe correr tail -n 1 -f /home/server/log/access.log.
  • La parte inferior derecha debería correr htop
  • El inferior izquierdo debería ser simplemente un símbolo del sistema

¿Hay alguna manera de hacerlo a través de comandos / script, por lo que no tengo que volver a hacerlo todo a mano?

Videonauth
fuente
@muru Esto responde bastante a la parte de cómo iniciar las pantallas separadas, pero no a la parte de cómo ordenarlas directamente como se muestra arriba.
Videonauth
Todo lo que se puede hacer uso de atajos en la pantalla se puede hacer usando comandos en .screenrc. Para este arreglo tenemos el splitcomando .
muru

Respuestas:

16

Para el caso específico de los arreglos de la ventana, hay un comando de pantalla para guardarlos en un archivo: 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.

Entonces, una vez que haga el arreglo manualmente, presione Ctrla:, luego escriba layout dump /path/to/some/file. El diseño se guardará /path/to/some/filey luego podrá restaurarlo en una nueva sesión con:

screen -c /path/to/some/file
muru
fuente
+1 agradable; El split -vparece indocumentado :) es por eso que he tenido problemas.
Videonauth
@Videonauth en realidad está documentado en la sección de combinaciones de teclas predeterminadas. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy
Sí, parece que solo se menciona en la página de manual, al lado C-a |, pero no en los documentos de GNU
muru
Encontró un comportamiento extraño que es posible que desee mencionar: si escribe, por ejemplo, layout dump ~/layoutel proceso fallará, necesita una ruta completa (es decir /home/$USER/layout)
Videonauth
@Videonauth ya que la expansión de tilde generalmente es realizada por el shell, no es sorprendente si un comando dado no lo admite internamente. Algunos lo hacen, la mayoría no.
muru
10

Se me ocurrió lo siguiente para crear el resultado que se muestra en mi pregunta y siguiendo la excelente respuesta de @ muru . El uso layout dumpme dio lo siguiente:

split
focus
split -v
focus

Nota: la ~expansión de Tilde ( ) no funciona, por layout dumplo que en lugar de, ~/layout.dmppor ejemplo, necesitaría usar /home/<username>/layout.dmp.

De lo cual creé lo siguiente .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

Ahora solo necesito escribir screeny comenzar mi diseño deseado. Lo dejo aquí como un ejemplo para aquellos que se preguntan, pero no se olviden de votar la respuesta de @ muru, ya que él fue quien me ayudó a resolver esto.

Videonauth
fuente