GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tipps zur Verwendung des Bildschirms

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.


Linux
  1. Linux-Tipps zur Verwendung von Cron zum Planen von Aufgaben

  2. 3 Tipps zum Drucken mit Linux

  3. Linux-Tipps zur Verwendung von GNU Screen

  4. 8 Tipps für die Linux-Kommandozeile

  5. Verwenden von AppImage für die Linux-Paketverwaltung

Tipps zur Verwendung des Top-Befehls unter Linux

Nützliche Meld-Tipps/Tricks für fortgeschrittene Benutzer

Tipps zur Verwendung von tmux

Wichtige Tipps zum Installieren und Verwenden von Sublime Text unter Ubuntu

Verwenden von Variablen in SQLCMD für Linux

Nutze ich virtio für meinen KVM-Gast?