Wie starte ich den Bildschirm mit mehreren Teilungen direkt über die Befehlszeile?

11

Ich verwende, screennachdem ich mich bei sshmeinem Server angemeldet habe. Ab sofort richte ich die Teilungen in meinem Bildschirmfenster von Hand ein und führe die Befehle von Hand aus, wie im folgenden Screenshot gezeigt:

Geben Sie hier die Bildbeschreibung ein

  • Der obere Teil sollte laufen tail -n 1 -f /home/server/log/access.log.
  • Der untere rechte Teil sollte laufen htop
  • Die untere linke sollte einfach eine Eingabeaufforderung sein

Gibt es eine Möglichkeit, dies über Befehle / Skripte zu erledigen, sodass ich es nicht jedes Mal von Hand wiederholen muss?

Videonauth
quelle
@muru Dies ist eine gute Antwort für den Teil, wie man die separaten Bildschirme startet, nur nicht für den Teil, wie man sie wie oben gezeigt direkt bestellt.
Videonauth
Alles, was mit Verknüpfungen im Bildschirm ausgeführt werden kann, kann mit Befehlen in ausgeführt werden .screenrc. Für diese Anordnung haben wir den splitBefehl .
Muru

Antworten:

14

Für den speziellen Fall von Fensteranordnungen gibt es einen Bildschirmbefehl, um sie in einer Datei zu speichern : layout dump. Von 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.

Also, wenn Sie die Anordnung manuell, drücken Sie machen Ctrla:, dann geben layout dump /path/to/some/file. Das Layout wird in gespeichert /path/to/some/fileund Sie können es dann in einer neuen Sitzung wiederherstellen mit:

screen -c /path/to/some/file
muru
quelle
+1 schön; Das split -vscheint undokumentiert zu sein :) Deshalb hatte ich Probleme.
Videonauth
@Videonauth ist tatsächlich im Abschnitt Standard-Tastenkombinationen dokumentiert. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy
Ja, es sieht so aus C-a |, als
ob
Es wurde ein seltsames Verhalten gefunden, das Sie vielleicht erwähnen möchten: Wenn Sie beispielsweise layout dump ~/layout/home/$USER/layout
eingeben
@Videonauth Da die Tilde-Erweiterung normalerweise von der Shell durchgeführt wird, ist es nicht verwunderlich, wenn ein bestimmter Befehl dies intern nicht unterstützt. Einige tun es, die meisten nicht.
Muru
10

Ich habe mir Folgendes ausgedacht , um die in meiner Frage gezeigte Ausgabe zu erstellen und die ausgezeichnete Antwort von @ muru zu befolgen . Mit layout dumpgab mir folgendes:

split
focus
split -v
focus

Hinweis: Die Tilde ( ~) -Erweiterung funktioniert nicht mit dieser layout dumpOption, anstatt sie ~/layout.dmpbeispielsweise zu verwenden /home/<username>/layout.dmp.

Daraus habe ich dann folgendes erstellt .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

Jetzt muss ich nur noch tippen screenund mein gewünschtes Layout starten. Ich lasse das hier als Beispiel für diejenigen, die sich fragen, aber vergessen Sie nicht, die Antwort von @ muru zu stimmen, da er derjenige ist, der mich in die Lage versetzt hat, dies zu lösen.

Videonauth
quelle