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

4 Möglichkeiten, einen Befehl weiter auszuführen, nachdem Sie sich von der SSH-Sitzung abgemeldet haben

Angenommen, Sie greifen remote über SSH auf ein anderes System zu. Sie möchten einen Befehl ausführen, dessen Ausführung lange dauert, und dann die SSH-Sitzung beenden, aber den Befehl auch dann ausführen lassen, wenn Sie nicht mehr mit dem Remote-System verbunden sind. Wie machst du das? Wie Sie vielleicht wissen, werden alle laufenden Jobs beendet, sobald Sie SSH verlassen. Würden Sie den Job von vorne beginnen? Das müssen Sie nicht. Hier habe ich 4 Methoden angegeben, um einen Befehl am Laufen zu halten, nachdem Sie sich von der ssh-Sitzung abgemeldet haben. Lesen Sie weiter.

Einen Befehl weiter ausführen, nachdem Sie sich von der SSH-Sitzung in Linux abgemeldet haben

Es könnte viele Möglichkeiten geben, dies zu tun. Ich finde jedoch, dass die folgenden Methoden einfach und unkompliziert sind.

Methode 1 - Bildschirm verwenden

Der Bildschirm Tool, ein Vollbild-Fenstermanager mit VT100/ANSI-Terminalemulation, ermöglicht es Ihnen, sich sicher von der SSH-Sitzung zu trennen, ohne den Remote-Job zu beenden. Es ist hilfreich für diejenigen, die mit mehreren Remote-Servern arbeiten. Der Bildschirmbefehl ist in den meisten Linux-Betriebssystemen vorinstalliert. Für den Fall, dass es nicht installiert ist, können Sie es mit dem Paketmanager Ihrer Distribution installieren.

Unter Arch Linux und Derivaten:

$ sudo pacman -S screen

Auf RHEL, CentOS und anderen RPM-basierten Systemen:

$ sudo yum install screen

Auf Debian, Ubuntu und anderen DEB-basierten Systemen:

$ sudo apt-get install screen

Unter SUSE/OpenSUSE:

$ sudo zypper install screen

Nachdem Sie screen auf Ihren Remote-Systemen installiert haben, starten Sie die screen-Sitzung:

$ screen

Die Bildschirmsitzung wurde jetzt gestartet. Führen Sie nun den Job oder die Aufgabe aus, die Sie auf Ihrem Remote-System ausführen wollten.

Ich werde das Ubuntu 16.04-Image herunterladen:

$ wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso

Ubuntu 16.04 ISO ist etwa 1,5 GB groß. Bei einer normalen Breitbandverbindung dauert der Download fast eine Stunde. Sie müssen nicht so lange warten. Lassen Sie einfach den Download-Vorgang auf dem Remote-System laufen und beenden Sie die Bildschirmsitzung, indem Sie „Strg-A“ drücken gefolgt von “d“ . Sie werden eine Ausgabe wie unten sehen.

[detached from 1365.pts-0.server]

Nachdem Sie sich von der Bildschirmsitzung getrennt haben, können Sie sich vom Remote-System abmelden. Der Remote-Job wird weiterhin auf dem Server ausgeführt.

Sie können sich jederzeit wieder an die Bildschirmsitzung anhängen, indem Sie den Befehl verwenden:

$ screen -r

Sie werden sehen, dass der Prozess dort noch läuft.

Wenn Sie mehr als eine Bildschirmsitzung haben, müssen Sie die Bildschirmsitzungs-ID eingeben, um sie erneut anzuhängen. Um die Anzahl der Bildschirmsitzungen anzuzeigen, führen Sie Folgendes aus:

$ screen -ls

Beispielausgabe wäre:

There are screens on:There are screens on: 
     1382.pts-0.server (Saturday 15 July 2017 04:39:51  IST) (Detached) 
     1365.pts-0.server (Saturday 15 July 2017 04:38:44  IST) (Detached)
2 Sockets in /var/run/screen/S-sk.

Verbinden Sie sich jetzt erneut mit der gewünschten Bildschirmsitzung, sagen Sie 1382 , ausführen:

$ screen -r 1382

Weitere Einzelheiten finden Sie in den Manpages.

$ man screen
Empfohlener Download - Kostenloser Spickzettel:"Linux-Befehlszeilen-Spickzettel"

Methode 2 - Verwenden von tmux

Der tmux ist ein Terminal-Multiplexer, mit dem mehrere Terminals erstellt, aufgerufen und von einem einzigen Bildschirm aus gesteuert werden können. Eine tmux-Sitzung kann von einem Bildschirm getrennt und im Hintergrund weiter ausgeführt und später wieder angefügt werden. Wie das Screen-Tool können Sie auch tmux verwenden, um sich von einer SSH-Sitzung zu trennen, ohne die Remote-Jobs zu beenden. Der Befehl Tmux ist auf den meisten Linux-Betriebssystemen vorinstalliert. Für den Fall, dass es nicht installiert ist, können Sie es mit dem Paketmanager Ihrer Distribution installieren.

Unter Arch Linux und Derivaten:

$ sudo pacman -S tmux

Auf RHEL, CentOS und anderen RPM-basierten Systemen:

$ sudo yum install tmux

Auf Debian, Ubuntu und anderen DEB-basierten Systemen:

$ sudo apt-get install tmux

Unter SUSE/OpenSUSE:

$ sudo zypper install tmux

Starten Sie nach der Installation von tmux die tmux-Sitzung mit dem Befehl:

$ tmux

Starten Sie jetzt Ihre Aufgabe oder Ihren Job. Trennen Sie sich dann sicher von der tmux-Sitzung, ohne die Remote-Jobs zu beenden, indem Sie "STRG-b" drücken gefolgt von "d" . Dadurch wird Ihre tmux-Sitzung getrennt, Sie werden jedoch in dieser Sitzung im Hintergrund ausgeführt. Das bedeutet, dass alle Remotes ausgeführt werden, auch wenn Sie von der Sitzung getrennt sind.

Um die verfügbaren Sitzungen aufzulisten, führen Sie Folgendes aus:

$ tmux ls
0: 1 windows (created Sat Jul 15 16:51:35 2017) [134x33]
1: 1 windows (created Sat Jul 15 16:53:58 2017) [134x33]

Sie können sich erneut an die tmux-Sitzung anhängen, indem Sie die entsprechende Sitzungs-ID verwenden, wie unten gezeigt:

$ tmux attach -t 0

Weitere Einzelheiten finden Sie in den Manpages.

$ man tmux

Methode 3 – Verwenden von Reptyr

Was ist, wenn Sie vergessen haben, die Befehle in screen/tmux überhaupt zu starten? Keine Bange. Hier ist Reptyr kommt zu Hilfe. Reptyr hilft Ihnen, laufende Prozesse zwischen ptys zu verschieben. Wir haben bereits einen ausführlichen Guide zu Reptyr veröffentlicht. Sehen Sie sich den folgenden Link an.

  • Reptyr – Verschieben Sie einen laufenden Prozess von einem Terminal zu einem anderen, ohne es zu schließen

Methode 4 – Verwenden von nohup

Nein , steht für Nein h angauf , ist ein weiteres Befehlszeilendienstprogramm, mit dem Sie Linux-Befehle ausführen können, auch wenn Sie von den SSH-Sitzungen getrennt sind. Da es Teil von GNU Coreutils ist, müssen Sie es nicht installieren. Es ist in allen Linux-Distributionen vorinstalliert.

Die Anwendung ist absolut einfach. Nachdem Sie sich bei Ihrem Remote-System angemeldet haben, müssen Sie nur noch Folgendes tun:

$ nohup <command> &

Ja, so einfach ist das.

Beispiel:

$ nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Jetzt können Sie die SSH-Sitzung verlassen. Der Remote-Job wird weiter ausgeführt.

Melden Sie sich beim Remote-System an und führen Sie Folgendes aus, um die Liste der laufenden Jobs anzuzeigen.

$ jobs -l
[1]+ 1421 Running nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Standardmäßig werden die Ausgaben an "nohup.out" angehängt. Sie können die Ausgabedatei natürlich ändern.

Hier ist ein weiteres Beispiel.

$ nohup find -size +10M > log.txt &

Der obige Befehl findet Dateien mit einer Größe von mehr als 10 MB und schreibt die Ausgabe in die Datei log.txt.

Weitere Einzelheiten finden Sie in den Manpages.

$ man nohup

Und das war's erstmal, Leute. Haben Sie etwas im Sinn? Lass es mich gerne im Kommentarbereich unten wissen. Weitere gute Sachen folgen. Besuchen Sie uns weiter!

Prost!


Linux
  1. 4 Tipps, die Ihnen helfen, das Beste aus dem Linux-Befehl df herauszuholen

  2. Ssh – Prozesse weiterlaufen lassen, nachdem die Ssh-Sitzung getrennt wurde?

  3. Ssh – Wie erstelle ich einen Prozess, den ich während einer SSH-Sitzung starte, nachdem die Sitzung beendet wurde??

  4. Ein Python-Programm auch nach dem Abmelden von der SSH-Sitzung weiter ausführen?

  5. Wie halte ich einen Befehl, den ich von der Shell gestartet habe, am Laufen, wenn ich mich von der Shell abmelde?

Linux-Bildschirmbefehl:Prozesse trotz unterbrochener Verbindung weiterlaufen lassen

4 Möglichkeiten, sich von einer Ubuntu-Desktop-Sitzung abzumelden

So halten Sie Remote-SSH-Sitzungen nach der Trennung am Laufen

So melden Sie einen Benutzer unter Linux von SSH ab

So installieren und verwenden Sie den Bildschirmbefehl Ubuntu 20.04

Wie erhöhe ich den Scrollback-Puffer in einer laufenden Bildschirmsitzung?