Hintergrundjobs

Hintergrundjobs

Ich bin über SSH mit einem Server verbunden und möchte einen Prozess ausführen, der lange dauern wird. Ich verbinde mich mit dem Server über SSH im Terminal meines Laptops, möchte aber meinen Laptop ausschalten können, aber trotzdem den Fortschritt auf dem Server laufen lassen. Da es sich um zwei separate Computer handelt, sollte ich das eigentlich tun können, aber ich bin nicht sicher, ob das über SSH möglich ist.

Antwort1

Das geht ganz einfach: Fügen Sie &nach Ihrem Befehl ein ein, beispielsweise

bash script.sh &

Die Ausführung wird fortgesetzt, auch wenn Sie die Sitzung beenden oder das Terminal schließen.
Eine andere Möglichkeit besteht darin, nohupden Befehl zu verwenden und Ihren Befehl auszuführen. Beispiel:

nohup bash script.sh

Finden Sie mehr mit man nohupund folgen SieDasFrage, die in eine ähnliche Richtung geht.

Antwort2

Hintergrundjobs

Zur Ausführung im Hintergrund

program &

Wird im Hintergrund ausgeführt und nach dem Trennen der Verbindung fortgesetzt. Leitet auch stdoutzu weiter ~/nohup.out.

nohup program &

Dasselbe, aber Umleitung zu einer anderen Datei

nohup program > "another file" &

Hinweis zu den obigen Befehlen: Mit dem Befehl können Sie die Hintergrundjobs anzeigen jobs.

Dasselbe, aber aus der Jobliste entfernen

nohup program > "another file" & disown

Dauerhafte Sitzungen

Siehe gnu screen, tmux, und vnc. Sie ermöglichen es Ihnen, eine Sitzung offen zu halten, während die Verbindung getrennt ist.

Gnuscreen

#create a screen session (do this once)
screen -d -m

#attach to the session
screen -x

Sie können auch mehr als eine (benannte Sitzung) haben

#create a screen session (do this once)
screen -d -m -S a_name

#attach to the session
screen -x -S a_name

Beachten Sie, dass Strg_a verwendet wird, um den Bildschirm zu steuern, wenn Sie sich darin befinden. Strg_a Strg_a, um Strg_a an die Shell zu übergeben.

VNC

#create a vnc session (do this once)
vncserver -from 127.1.0.1 -geometry 1920x1000 :10

#attach to the session (from a remote machine)
ssvnc Vnc+ssh://«user»@«machine-name»:10

Ändern Sie die Geometrie, um Ihre Anzeige zu reparieren. Ändern Sie möglicherweise die Anzeigenummer.

Anmerkungen:

Jeder auf dem lokalen Computer kann eine Verbindung zur VNC-Sitzung herstellen.

Sie können -SecurityTypes Nonedie VNC-Sicherheit deaktivieren, wenn Sie über ausreichend Sicherheit verfügen ssh.

127.1.0.1liegt im Loopback-Bereich. Nur Prozesse auf dem lokalen Rechner können eine Verbindung herstellen. Sie können eine Remote-Verbindung über ssh(ssvnc) herstellen. Sie können nftableseinschränken, mit welchen Benutzern eine Verbindung hergestellt werden kann 127.1.0.1. Es gibt viele Adressen im Loopback-Bereich 127.0.0.1( 127.255.255.254ca. 16 Millionen), sodass Sie jedem Benutzer eine zuweisen können und immer noch Reserve haben.

verwandte Informationen