Hier ist mein Problem:
Ich habe ein bestimmtes Setup mit Bildschirm, den ich gerne beim Start starte, um schnell auf mehrere Programme zugreifen zu können, die ich oft verwende.
Hier ist ein Beispiel:
Bildschirm -U -S Test -t Shell
Innerhalb dieser Bildschirmsitzung:
screen -t irc (in dem ich irssi starte) screen -t process (in dem ich top starte) ...
Beachten Sie, dass dies zueine einzigartige Sitzungund mehrere Shells in dieser Sitzung. Ich gebe es an, weil meine Tests mich bisher an den Punkt gebracht haben, an dem mein Skript eine Bildschirmsitzung in einer Sitzung in einer Sitzung erstellt ... und ich kann nicht wirklich herausfinden, warum.
Ich würde gerne wissen, ob es möglich ist, ein Skript zu erstellen, das ich starten kann, um das gesamte Bildschirm-Setup zu erstellen und die Programme bei Ausführung automatisch zu starten.
Danke für alle Ratschläge. =)
Antwort1
Erstellen Sie eine ~/.screenrc
Datei mit:
defutf8 on
sessionname test
screen -t shell 0
screen -t irc 1 irssi
screen -t process 2 top
Wenn Sie sich dann bei der Box anmelden, führen Sie
screen -DR
Dadurch wird jeder aktuell laufende Bildschirm abgetrennt und an ihn angehängt, oder, wenn kein Bildschirm läuft, wird ein neuer erstellt.
Antwort2
Sie können tmux-commands 1 in einer bestehenden Sitzung screen -S sessionname -X command
ausführen , z. B. um ein neues Fenster zu erstellen und darin zu laufen. Beachten Sie, dass das neu erstellte Fenster geschlossen wird, wenn der Befehl beendet wird. Wenn Sie danach eine Shell haben möchten, verwenden Sie etwas wie .-X screen top
top
-X screen sh -c 'ls; bash'
Es gibt auch Möglichkeiten, Befehle in vorhandenen Bildschirmfenstern auszuführen, siehe diese beiden Fragen:
- Senden Sie einen Befehl an eine bereits laufende Bildschirmsitzung
- Befehle an eine bestehende Bildschirmsitzung senden?
1: Die vollständige Liste der tmux-Befehle finden Sie auf der Manpage.