5 Möglichkeiten, um die Remote -SSH -Sitzungen und -prozesse nach der Trennung zu halten

5 Möglichkeiten, um die Remote -SSH -Sitzungen und -prozesse nach der Trennung zu halten

Ssh oder Sichere Schale In einfachen Worten kann eine Person auf einem anderen Benutzer aus der Ferne auf einen anderen Benutzer zugreifen, aber nur in Befehlszeile i.e. Nicht-Gui-Modus. In technischeren Hinsicht werden bei einem anderen Benutzer auf einem anderen System ein Pseudo-terminal erstellt, wenn wir auf einem anderen System auf einem anderen System eingehen und Befehle auf dieser Maschine ausführen und an die Anmeldeschale des angemeldeten Benutzers angehängt werden.

5 Möglichkeiten, SSH -Sitzungen nach der Trennung zu halten

Wenn wir uns von der Sitzung oder der Sitzung abmelden, nachdem wir uns schon seit einiger Zeit untätig waren, die SEUFZEND Signal wird an die Pseudo-terminale und alle Jobs, die an diesem Terminal betrieben wurden.

Verpassen Sie nicht: 5 Nützliche Praktiken, um SSH Server sicher und geschützt zu halten

Nur die Jobs, die konfiguriert wurden, um dieses Signal zu ignorieren. Auf Linux -Systemen können wir viele Möglichkeiten haben, diese Jobs auf dem Remote -Server oder eines Computers auch nach dem Anmeldung und der Sitzung der Sitzung und Sitzung zu machen.

Prozesse unter Linux verstehen

Normaler Prozess

Normale Prozesse sind solche, die eine Lebensdauer einer Sitzung haben. Sie werden während der Sitzung als Vordergrundprozesse gestartet und landen in einer bestimmten Zeitspanne oder wenn die Sitzung angemeldet wird. Diese Prozesse haben ihren Eigentümer als einen der gültigen Benutzer des Systems, einschließlich Root.

Waisenprozess

Orphan -Prozesse sind diejenigen, die anfänglich einen Elternteil hatten, der den Prozess erstellt hat, aber nach einiger Zeit starb der übergeordnete Prozess unbeabsichtigt oder stürzte ab, was init als Eltern dieses Prozesses war. Solche Prozesse haben als unmittelbarer Elternteil initiert, der auf diesen Prozessen wartet, bis sie sterben oder am Ende landen.

Daemon -Prozess

Dies sind einige absichtliche verwaiste Prozesse, solche Prozesse, die absichtlich auf dem System laufen lassen. Es handelt sich normalerweise um langjährige Prozesse, die einst initiiert und dann von jedem kontrollierenden Terminal abgelöst werden, damit sie im Hintergrund laufen können, bis sie nicht abgeschlossen sind oder am Ende einen Fehler werfen können. Eltern solcher Prozesse sterben absichtlich, was Kind im Hintergrund ausführen lässt.

Techniken, um die SSH -Sitzung nach der Trennung am Laufen zu halten

Es kann verschiedene Möglichkeiten geben, SSH -Sitzungen nach der Unterbrechung wie unten beschrieben zu lassen:

1. Verwenden des Bildschirmbefehls, um die SSH -Sitzungen im Betrieb zu halten

Bildschirm ist ein Textfenster -Manager für Linux, mit dem Benutzer mehrere Terminalsitzungen gleichzeitig verwalten, zwischen Sitzungen wechseln, die Sitzung für die laufenden Sitzungen auf dem Bildschirm wieder aufnehmen und die Sitzung jederzeit wieder aufnehmen können, ohne sich Sorgen zu machen, dass die Sitzung angemeldet wird, oder das Terminal geschlossen wird.

Die Bildschirmsitzungen können gestartet und dann vom Steuerterminal abgelöst werden, sodass sie im Hintergrund ausgeführt werden und dann jederzeit und sogar an jedem Ort wieder aufgenommen werden. Nur Sie müssen Ihre Sitzung auf dem Bildschirm starten und wenn Sie möchten, lösen Sie sie vom pseudo-terminalen (oder dem kontrollierenden Terminal) und logout. Wenn Sie sich fühlen, können Sie die Sitzung neu loginieren und wieder aufnehmen.

Eine Bildschirmsitzung starten

Nach dem Typen 'Bildschirm' Der Befehl, Sie befinden sich in einer neuen Bildschirmsitzung. In dieser Sitzung können Sie neue Fenster erstellen, zwischen Windows verhandeln, den Bildschirm sperren und viel mehr Dinge tun, die Sie auf einem normalen Terminal tun können.

$ Bildschirm 
Startbildschirmsitzung unter Linux

Sobald die Bildschirmsitzung gestartet wurde, können Sie einen beliebigen Befehl ausführen und die Sitzung ausführen, indem Sie die Sitzung abnehmen.

Führen Sie die Befehle in der Bildschirmsitzung aus
Einen Bildschirm abnehmen

Gerade wenn Sie sich von der Remote -Sitzung abmelden möchten, die Sitzung, die Sie auf dieser Maschine erstellt haben. Danach können Sie sich sicher abmelden.

Drücken "Strg+a" Sofort gefolgt von "D" und Sie werden zurück zum Terminal sein, wenn Sie die Nachricht sehen, dass der Bildschirm abgelöst wird. Jetzt können Sie sich sicher abmelden und Ihre Sitzung wird lebendig bleiben.

Linux -Bildschirmsitzung abnehmen
Wiederaufnahme der abgelösten Bildschirmsitzung

Wenn Sie eine abgelöste Bildschirmsitzung wieder aufnehmen möchten, die Sie vor dem Abmelden verlassen haben "Bildschirm -r" Falls wenn nur ein Bildschirm geöffnet wird und wenn mehrere Bildschirmsitzungen geöffnet werden "Bildschirm -r".

$ screen -r $ screen -r -r  
Resume Distached Bildschirmsitzung wieder aufnehmen

Um mehr über den Bildschirmbefehl und die Verwendung zu erfahren, folgen Sie einfach dem Link: Verwenden Sie den Bildschirmbefehl, um Linux -Terminalsitzungen zu verwalten

2. Verwenden von TMUX (Terminal Multiplexer), um SSH -Sitzungen am Laufen zu halten

Tmux ist eine andere Software, die erstellt wird, um ein Ersatz für zu sein Bildschirm. Es hat die meisten Fähigkeiten von Bildschirm, mit wenigen zusätzlichen Funktionen, die es leistungsfähiger machen als Bildschirm.

Abgesehen von allen Optionen, die auf dem Bildschirm angeboten werden, spalten Sie die Tänen horizontal oder vertikal zwischen mehreren Fenstern, der Änderung der Fensterscheiben, der Überwachung der Sitzungsaktivität, dem Scripting mit dem Befehlszeilenmodus usw. Aufgrund dieser Merkmale von TMUX hat es von nahezu allen Unix -Verteilungen eine breite Einführung genossen und auch in das Basissystem von OpenBSD aufgenommen.

Starten Sie eine TMUX -Sitzung

Nach SSH auf dem Remote -Host und tippt tmux, Sie werden in eine neue Sitzung mit einem neuen Fenster eintreten, das sich vor Ihnen öffnet, in dem Sie alles tun können, was Sie an einem normalen Terminal tun.

$ tmux 
Starten Sie die TMUX -Terminalsitzung

Nachdem Sie Ihre Operationen am Terminal ausführen, können Sie diese Sitzung vom Steuerterminal abnehmen, damit sie in den Hintergrund gelangen und sich sicher abmelden können.

Führen Sie Linux -Befehle in der TMUX -Sitzung durch
TRACH TMUX Session vom Terminal abnehmen

Entweder können Sie rennen "TMUX Abetach" Bei der Ausführung von TMUX -Sitzungen oder Sie können die Verknüpfung verwenden (Strg+b dann d). Danach wird Ihre aktuelle Sitzung abgelöst und Sie werden zu Ihrem Terminal zurückkehren, von wo aus Sie sich sicher abmelden können.

$ tmux detach 
TMUX -Sitzung unter Linux abnehmen
Wiederaufnahme der geschlossenen TMUX -Sitzung

Um die Sitzung wieder zu öffnen, die Sie abgetrennt und gelassen haben, als Sie sich aus dem System abgemeldet haben, loginieren Sie einfach die Remote-Maschine und tippen "TMUX Anhang" Um die geschlossene Sitzung wieder zu wiederholen, wird es immer noch da sein und laufen.

$ tmux anhängen 
Lebenslauf TMUX Closed Session

Um mehr über TMUX und die Verwendung zu erfahren, folgen Sie einfach dem Link: Verwenden Sie den TMUX -Terminal -Multiplexer, um mehrere Linux -Terminals zu verwalten.

3. Verwenden Sie den Befehl nohup, um weiterhin SSH -Sitzungen auszuführen

Wenn Sie nicht so vertraut sind Bildschirm oder tmux, Sie können verwenden nohup und senden Sie Ihren langlaufenden Befehl in den Hintergrund, damit Sie fortfahren können, während der Befehl weiter im Hintergrund ausführt. Danach können Sie sich sicher abmelden.

Mit dem Befehl nohup geben wir den Prozess an, das zu ignorieren SEUFZEND Signal, das durch SSH -Sitzung zur Kündigung gesendet wird, wodurch der Befehl auch nach dem Abmelden der Sitzung bestehen bleibt. Bei Sitzungsanmeldung wird der Befehl von der Steuerung des Terminals geschleppt und läuft weiterhin im Hintergrund als Daemon -Prozess.

Ausführungsbefehl mit Nohup im Hintergrund ausführen

Hier ist ein einfaches Szenario, in dem wir mit Nohup nach Dateien im Hintergrund in der SSH -Sitzung suchen können PID und Job AUSWEIS des Prozesses ([JobID] PID).

# NoHup Find / -Type f $ gt; Dateien_in_System.raus 2> 1 & 
Führen Sie den Befehl Linux im Hintergrund aus
Wiederaufnahme der Sitzung, um anzuzeigen, ob Job noch ausgeführt wird

Wenn Sie erneut neu loginieren, können Sie den Befehlsstatus überprüfen, und bringen Sie ihn mithilfe des Vordergrunds wieder in den Vordergrund "fg %JobID" seine Fortschritte überwachen und so weiter. Im Folgenden zeigt der Ausgang, dass der Job abgeschlossen wurde, da er nicht auf Re-Login angezeigt wird, und hat die angezeigte Ausgabe gegeben.

# FG %JobID 
Führen Sie den Befehl Linux im Hintergrund aus

4. Verwenden Sie den Befehl disown, um SSH -Sitzungen am Laufen zu halten

Eine weitere elegante Methode, um Ihren Befehl oder eine einzige Aufgabe im Hintergrund auszuführen und auch nach dem Abmelden oder einer Trennung von Sitzungen am Leben zu bleiben, besteht verleugnen.

Verleugnen, Entfernt den Job aus der Prozessaufgabeliste des Systems, sodass der Prozess vor der Trennung während der Sitzung getötet wird SEUFZEND von der Shell, wenn Sie sich abmelden.

Der Nachteil dieser Methode ist, dass sie nur für die Jobs verwendet werden sollte, die keine Eingaben von der benötigen Stdin und weder müssen an schreiben Stdout, Es sei denn, Sie leiten Jobs Input und Output spezifisch um, denn wenn Job versucht, mit zu interagieren Stdin oder Stdout, es wird anhalten.

Ausführungsbefehl mithilfe von Ablehnung im Hintergrund ausführen

Unten haben wir gesendet Klingeln Befehl zu Hintergrund, damit UT weiter läuft und aus der Jobliste entfernt wird. Wie gesehen wurde der Job zum ersten Mal suspendiert, nach dem er noch in der Jobliste war als Prozess ID: 15368.

$ ping tecmint.com> pingout & $ jobs -l $ disunce -h %1 $ ps -f | Grep Ping 
Führen Sie Linux -Befehle mit disuner aus

Danach wurde ein disuneres Signal an den Job übergeben und es wurde von der Jobliste entfernt, aber immer noch im Hintergrund lief. Der Job würde weiterhin ausgeführt, wenn Sie nachstehend wieder auf den Remote-Server angezeigt werden.

$ ps -f | Grep Ping 
Überprüfen Sie den Arbeitsstatus

5. Verwenden Sie den Befehl setSID, um SSH -Sitzungen zu laufen

Ein weiteres Nutzen, um das erforderliche Verhalten zu erreichen, ist setsid. Nohup hat einen Nachteil in dem Sinne, dass die Prozessgruppe des Prozesses gleich bleibt, sodass der mit Nohup ausgeführte Prozess für jedes Signal an die gesamte Prozessgruppe anfällig ist (wie wie Strg + c).

setsid Auf der anderen Seite verteilt eine neue Prozessgruppe für den durchführenden Prozess und daher der erstellt.

Führen Sie einen Befehl mit setSID aus

Hier zeigt es, dass der Prozess "Schlaf 10m" wurde seit seiner Erstellung vom kontrollierenden Terminal abgelöst, seit seiner Erstellung.

$ setsid sleep 10m $ ps -f | Grep Schlaf 
Führen Sie den Befehl linux mit setSID aus

Wenn Sie nun die Sitzung neu loginieren, werden Sie diesen Prozess weiterhin ausgeführt.

$ ps -f | grep [s] Leep 
Linux -Prozess Ausführender Hintergrund

Abschluss

Auf welche Möglichkeiten könnten Sie sich vorstellen, Ihren Prozess auch nach dem Abmelden von der SSH -Sitzung zu halten? Wenn es einen anderen und effizienten Weg gibt, den Sie sich vorstellen können, erwähnen Sie in Ihren Kommentaren.