5 Möglichkeiten, um die Remote -SSH -Sitzungen und -prozesse nach der Trennung zu halten
- 3766
- 677
- Miriam Bauschke
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 haltenWenn 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.
$ BildschirmStartbildschirmsitzung 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 ausEinen 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.
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 -rResume 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.
$ tmuxStarten 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 durchTRACH 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 detachTMUX -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ängenLebenslauf 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 %JobIDFü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 PingFü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 SchlafFü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] LeepLinux -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.
- « So installieren Sie SQLite und SQLite Browser in Ubuntu
- GDU - Ein ziemlich schneller Scheibennutzungsanalysator für Linux »