Ich habe manchmal lange laufende Prozesse, die ich starten möchte, bevor ich nach Hause gehe. Daher erstelle ich eine SSH-Sitzung für den Server, um den Prozess zu starten. Dann möchte ich meinen Laptop schließen und nach Hause gehen. Nach dem Abendessen möchte ich das Überprüfen Sie den Prozess, den ich gestartet habe, bevor Sie die Arbeit verlassen. Wie kann ich das mit SSH machen? Wenn Sie Ihre SSH-Verbindung unterbrechen, wird nach meinem Verständnis auch die Anmeldesitzung auf dem Server unterbrochen, wodurch der lang andauernde Prozess abgebrochen wird.
command-line
ssh
process
gnu-screen
λ Jonas Gorauskas
quelle
quelle
nohup
fängt SIGHUP ab, damitlong-running-process
es nicht stirbt , wenn die Shell, die es ausgeführt hat, beendet wird und SIGHUP an alle noch laufenden Kinder sendet .disown
Entfernt einfach den angegebenen Job aus der untergeordneten Liste von Bash, damit er überhaupt nicht versucht, SIGHUP zu senden.nohup
ist ein Programm, das von der Shell getrennt ist, daher funktioniert es mit allen Shells, wohingegendisown
es sich um ein in Bash integriertes Programm handelt.nohup
Akzeptiert den auszuführenden Befehl,disown
funktioniert jedoch erst, nachdem der Job gestartet und im Hintergrund ausgeführt wurde, sodass Sie zur Shell zurückkehren können.tail -f nohup.out
um zu überprüfen, was los ist, wenn du zurück bist.Sie möchten GNU Screen verwenden. Es ist super toll!
CTRL+ a, dum sich von Ihrer Bildschirmsitzung zu lösen
Wenn Sie zu Ihrem Laptop zurückkehren:
Dann prüfen Sie den Fortschritt Ihres langjährigen Prozesses!
screen
ist ein sehr umfassendes Tool und kann viel mehr als das, was ich beschrieben habe. Versuchen Sie in einer Bildschirmsitzung die Tastenkombination Strg + a? um ein paar gebräuchliche Befehle zu lernen. Die wahrscheinlich häufigsten sind:screen -d -r
um sicherzustellen, dass eine andere Shell, die an meine Bildschirmsitzung angehängt ist, getrennt wird, bevor ich sie auf meinem aktuellen System wieder aufnehme.quelle
screen -S name
und lass deinen anderen Freund eine Verbindung herstellenscreen -x name
.tmux
Mittmuxinator
ist eine großartige Kombination für ausgefallene Setups, während ichscreen
eine schnelle und einfache Lösung bevorzuge .Wenn Sie nicht im Voraus geplant und eingerichtet haben
screen
, gehen Sie wie folgt vor:Wenn Ihr Prozess im Hintergrund ausgeführt wird: Gehen Sie zu # 3, andernfalls:
Ctrl-Z
Unterbrechen Sie den Vordergrundprozess. Hiermit wird die Job-Nr. Des angehaltenen Prozesses gemeldet, zum Beispiel:Senden Sie
processName
in den Hintergrund mitbg %1
(unter Verwendung der Job-Nr., Die der folgt%
). Dies wirdprocessName
im Hintergrund fortgesetzt.Ablehnung
processName
mitdisown %1
oderdisown PID
. Verwenden Sie das-h
Flag, wenn Sie den Besitz beibehalten möchten, bis Sie Ihre aktuelle Shell beenden.quelle
&
als ich ihn angefangen hatte. Das scheint großartig zu funktionieren!Was Sie verwenden möchten, ist screen oder noch besser ein benutzerfreundlicher Wrapper um screen namens byobu.
Auf dem Bildschirm können Sie mehrere virtuelle Terminalsitzungen in derselben SSH-Sitzung ausführen. Ein Tutorial und Hilfeseiten stehen zur Verfügung.
byobu ist ein Wrapper, mit dem Sie einfach neue Bildschirme mit einer einfachen Funktionstaste anstelle einer Tastenkombination von Strg-A öffnen können. Außerdem wird eine Statuszeile mit allen offenen virtuellen Terminals angezeigt, die benannt werden können.
Ein weiteres nettes Feature ist die Tatsache, dass Ihr gesamter Bildschirm eingeschaltet bleiben kann, während Ihre SSH-Verbindung getrennt ist. Du verbindest dich einfach wieder per ssh und rufst byobu an und alles ist wie vorher.
Endlich ein paar Screenshots von byobu.
quelle
Es könnte erwähnenswert sein
ssh -t lala screen -rxU moo
wird an die moo session auf host lala angehängtssh -t lala screen -S moo
erstellt die MOO- Sitzung auf Host Lalaund
ssh -t lala screen -S moo quux
erstellt die MOO- Sitzung auf Host Lala und führt das Programm Quux aus , wobei die Sitzung nach Abschluss beendet wird.quelle
Alte Frage, seltsam, noch hat niemand tmux geraten , das als Hülle für n Konsolen fungiert und sie offen hält, bis sie gebraucht werden. Dies ermöglicht mehr Kontrolle neben einer Reihe von Funktionen, die tmux hat. Es ist einfach zu verwalten, Sie führen einfach tmux aus, was Sie in die Shell bringt, starten Ihren langen Job, drücken dann Strg + b, gefolgt von d (trennen) (
ctrl+b
ist das "ok google" von tmux undd
der Befehl zum Schließen ohne Austritt aus der Schale). Dies funktioniert tatsächlich, wenn Sie beispielsweise Putty gerade schließen. Wenn Sie sich nach dem Abendessen wieder verbinden, können Sie tmux mit erneut öffnentmux attach
, um Ihren Bildschirm genau so zu sehen, wie Sie ihn verlassen haben. Etwas, das ich liebe, ist das Teilen von Fenstern:ctrl+b
und dann drücken"
. So wechseln Sie von einem Bereich in einen anderen:ctrl+b
Drücken Sie anschließend auf den Aufwärts- / Abwärtspfeil.quelle
Eine gute Anleitung finden Sie hier: Lassen Sie Ihre SSH-Sitzung beim Trennen der Verbindung weiterlaufen
Jetzt können Sie eine neue Bildschirmsitzung starten, indem Sie einfach screen in die Befehlszeile eingeben. Ihnen werden einige Informationen zum Bildschirm angezeigt. Drücken Sie die Eingabetaste, und Sie erhalten eine normale Eingabeaufforderung.
Um die Verbindung zu trennen (aber die Sitzung laufen zu lassen), drücken Sie Ctrl+ Aund dann Ctrl+ Dunmittelbar nacheinander. Sie sehen die Nachricht [getrennt]
So stellen Sie die Verbindung zu einer bereits laufenden Sitzung wieder her
Zum erneuten Herstellen einer Verbindung zu einer vorhandenen Sitzung oder zum Erstellen einer neuen Sitzung, falls keine vorhanden ist
Um ein neues Fenster innerhalb einer laufenden Bildschirmsitzung zu erstellen, drücken Sie Ctrl+ Aund dann Csofort nacheinander. Sie sehen eine neue Eingabeaufforderung.
Um von einem Bildschirmfenster zu einem anderen zu wechseln, drücken Sie Ctrl+ Aund dann Ctrl+ Aunmittelbar hintereinander.
Zum Auflisten der geöffneten Bildschirmfenster drücken Sie Ctrl+ Aund dann Wsofort nacheinander
quelle
<kbd>Ctrl</kbd>
die Namen als Tastaturtasten anzeigen.Ich benutze NX NoMachine, das für mich kostenlos ist, weil es nur ich bin. Im Wesentlichen wird eine X-Sitzung auf dem Server ausgeführt, mit der Sie immer wieder eine Verbindung herstellen und die Verbindung trennen können. Die X-Sitzung läuft weiter, wenn Sie nicht verbunden sind. Verbindungen können von überall hergestellt werden. Sie können zwischen schwebenden Fenstern oder einem einzelnen Fenster wählen, das einen gesamten Desktop enthält (z. B. einen vollständigen Gnome-Desktop). Der Client (den Sie auf Ihrem Laptop ausführen würden) kann unter Linux, MacOS, Solaris oder Microsoft Windows ausgeführt werden. Im letzteren Fall werden schwebende Fenster in der Windows-Taskleiste einzeln angezeigt.
Ich verwende meinen Windows XP-Laptop (den ich für bestimmte Windows-spezifische Hardware benötige) als Front-End für meine beiden Linux-Server mit NX Nomachine. Ich kann sogar von Linux aus auf dem Drucker drucken, der an meinen Windows-Laptop angeschlossen ist.
quelle