Come posso avviare la schermata con più divisioni direttamente dalla riga di comando?


13

Sto usando screendopo aver effettuato l'accesso con il sshmio server. A partire da ora ho impostato le divisioni nella mia finestra dello schermo a mano ed eseguo i comandi a mano come mostrato nella seguente schermata:

inserisci qui la descrizione dell'immagine

  • La parte superiore dovrebbe essere eseguita tail -n 1 -f /home/server/log/access.log.
  • La parte in basso a destra dovrebbe essere eseguita htop
  • Quello in basso a sinistra dovrebbe essere semplicemente un prompt dei comandi

Esiste un modo per farlo tramite comandi / script, quindi non devo rifarlo ogni volta a mano?



@muru Questo risponde abbastanza bene alla parte come avviare le schermate separate, ma non alla parte su come ordinarle direttamente come mostrato sopra.
Videonauth,

Tutto ciò che può essere fatto usando le scorciatoie nella schermata può essere fatto usando i comandi in .screenrc. Per questa disposizione abbiamo il splitcomando .
Muru,

Risposte:


16

Per il caso specifico della disposizione delle finestre, c'è un comando di schermo per salvarli in un file: layout dump. Da 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.

Quindi, una volta effettuata la disposizione manualmente, premere Ctrla:, quindi digitare layout dump /path/to/some/file. Il layout verrà salvato in /path/to/some/filee sarà quindi possibile ripristinarlo in una nuova sessione con:

screen -c /path/to/some/file

+1 simpatico; Il split -vsembra non documentata :) questo è il motivo per cui ho faticato.
Videonauth,

@Videonauth in realtà è documentato nella sezione dei tasti predefiniti. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy,

Sì, sembra che sia menzionato solo nella manpage, accanto a C-a |, ma non nei documenti GNU
muru,

Trovato un comportamento strano che potresti voler menzionare: se digiti ad esempio layout dump ~/layoutil processo fallirà, sarà necessario il percorso completo (ad es. /home/$USER/layout)
Videonauth,

@Videonauth poiché l'espansione tilde viene solitamente eseguita dalla shell, non sorprende se un determinato comando non lo supporta internamente. Alcuni lo fanno, la maggior parte no.
muru,

10

Ho pensato a quanto segue per creare l'output mostrato nella mia domanda e seguire l'eccellente risposta di @ muru . Utilizzando layout dumpmi ha dato quanto segue:

split
focus
split -v
focus

Nota: l' ~espansione di Tilde ( ) non funziona, layout dumpquindi ~/layout.dmpè necessario, ad esempio, utilizzare /home/<username>/layout.dmp.

Da cui ho quindi creato quanto segue .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

Ora ho solo bisogno di digitare screene avviare il layout desiderato. Lascio questo qui come esempio per coloro che si stanno chiedendo, ma non dimenticare di votare la risposta di @ muru, poiché è lui che mi ha reso in grado di risolverlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.