Was passiert, wenn Sie mit einem lang laufenden Programm mit einem Remote-System verbunden sind und die Verbindung dann unterbrochen wird? Die Chancen stehen gut, dass Sie das Programm zumindest neu starten müssen, und im schlimmsten Fall werden Sie Daten beschädigen. Um dies zu umgehen, werden einige Programme in einer Windows-Shell auf dem System ausgeführt. Ein sehr einfaches Beispiel dafür ist der screen
Programm:
[pgervase@pgervase ~]$ ssh [email protected]
X11 forwarding request failed on channel 0
Last login: Wed Jan 27 12:10:06 2021 from xxxxxxxx.redhat.com
[root@rhel7dev ~]# screen
Dies öffnet meine neue Shell auf rhel7dev
System. Ich führe den ping
aus Befehl unten innerhalb dieser Sitzung:
[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=3 ttl=100 time=242 ms
Ich werde jetzt zeigen, wie man sich von der Sitzung löst, um einen Netzwerkausfall zu simulieren oder einfach etwas über Nacht laufen zu lassen. Dazu drücke ich Strg , halten Sie diese Taste gedrückt und drücken Sie dann A , und drücken Sie dann D . Das bringt mich zurück zur Standard-SSH-Eingabeaufforderung und ich kann dann screen -ls
ausführen um meine getrennte Sitzung zu sehen:
[root@rhel7dev ~]# screen -x
[detached from 25665.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There is a screen on:
25665.pts-0.rhel7dev (Detached)
1 Socket in /var/run/screen/S-root.
[root@rhel7dev ~]#
[Vielleicht gefällt Ihnen auch: Arbeiten mit Pipes in der Linux-Befehlszeile]
Um meine Bildschirmsitzung fortzusetzen, gebe ich screen -x
ein weil es nur eine Sitzung als Option gab. Das brachte mich zurück zu der Bildschirmsitzung, wo der ping
Befehl läuft noch:
[root@rhel7dev ~]# ping www.google.com
PING www.google.com (74.125.24.147) 56(84) bytes of data.
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=1 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=2 ttl=100 time=242 ms
<snipped>
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=19 ttl=100 time=242 ms
64 bytes from 74.125.24.147 (74.125.24.147): icmp_seq=20 ttl=100 time=242 ms
^C
--- www.google.com ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 20278ms
rtt min/avg/max/mdev = 242.105/242.197/242.727/0.576 ms
[root@rhel7dev ~]#
Ich kann mehrere Bildschirmsitzungen gleichzeitig haben:
[root@rhel7dev ~]# screen -ls
There is a screen on:
25665.pts-0.rhel7dev (Detached)
1 Socket in /var/run/screen/S-root.
[root@rhel7dev ~]# screen
[detached from 25693.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
2 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]# screen
[detached from 25706.pts-0.rhel7dev]
[root@rhel7dev ~]# screen -ls
There are screens on:
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
3 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]#
In jeder dieser drei Bildschirmsitzungen kann ich Befehle ausführen lassen oder eine Sitzung einfach an der Eingabeaufforderung sitzen lassen.
Ein Standard-screen -x
funktioniert nicht, um eine Sitzung jetzt fortzusetzen, da mehrere Bildschirme ausgeführt werden:
[root@rhel7dev ~]# screen -x
There are several suitable screens on:
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
[root@rhel7dev ~]#
Um eine Verbindung zu einer meiner Sitzungen herzustellen, muss ich screen -x
ausführen und fügen Sie genügend Bildschirmnamen hinzu, um eindeutig zu sein:
[root@rhel7dev ~]# screen -x 257
[detached from 25706.pts-0.rhel7dev]
[root@rhel7dev ~]#
Anstatt zu versuchen, sich auf nur eine Sitzung zu beschränken oder sich daran zu erinnern, was auf welchem Bildschirm läuft, können Sie der Sitzung einen Namen geben, indem Sie -S
verwenden Argument:
[root@rhel7dev ~]# screen -S "db upgrade"
[detached from 25778.db upgrade]
[root@rhel7dev ~]# screen -ls
There are screens on:
25778.db upgrade (Detached)
25706.pts-0.rhel7dev (Detached)
25693.pts-0.rhel7dev (Detached)
25665.pts-0.rhel7dev (Detached)
4 Sockets in /var/run/screen/S-root.
[root@rhel7dev ~]# screen -x "db upgrade"
[detached from 25778.db upgrade]
[root@rhel7dev ~]#
Um eine Bildschirmsitzung zu beenden, können Sie exit
eingeben oder drücken Sie Strg+A und dann D .
Jetzt wissen Sie, wie Sie screen
starten, stoppen und beschriften Sitzungen lassen Sie uns ein wenig mehr in die Tiefe gehen. Um Ihre Bildschirmsitzung vertikal zu halbieren, drücken Sie Strg+A und dann das | Taste (Umschalt+Backslash ). An diesem Punkt haben Sie Ihre Bildschirmsitzung mit der Eingabeaufforderung auf der linken Seite:

Um zu Ihrem rechten Bildschirm zu wechseln, drücken Sie Strg+A und dann den Tab Schlüssel. Ihr Cursor befindet sich jetzt in der richtigen Sitzung, aber es gibt keine Eingabeaufforderung. Um eine Eingabeaufforderung zu erhalten, drücken Sie Strg+A und dann C . Ich kann dies mehrmals tun, um mehrere vertikale Teilungen auf dem Bildschirm zu erhalten:

Sie können nun mit Strg+A+Tab zwischen den beiden Bildschirmbereichen hin und her wechseln .
Was passiert, wenn Sie cat
eine Datei ausgeben, die größer ist, als Ihre Konsole anzeigen kann, sodass einige Inhalte vorbeiscrollen? Um im Puffer zurückzublättern, drücken Sie Strg+A und dann Esc . Sie können jetzt die Cursortasten verwenden, um sich auf dem Bildschirm zu bewegen und in den Puffer zurückzugehen.
Es gibt andere Optionen für screen
, um sie anzuzeigen, drücken Sie Strg , dann A , dann das Fragezeichen :

[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]
Weitere Informationen finden Sie in der Manpage für screen
. Dieser Artikel ist eine kurze Einführung in die Verwendung des screen
Befehl, damit eine getrennte Remote-Sitzung nicht versehentlich einen Prozess beendet. Ein anderes Programm, das screen
ähnelt ist tmux
und Sie können über tmux
lesen in diesem Artikel.