Prozess in der Shell remote starten; bei Verbindungsabbruch wieder einloggen

Raubsau

NGBler
Registriert
29 Aug. 2013
Beiträge
197
Hallo,

ich möchte mich per SSH auf meinen Rechner zu Hause einloggen und dort einen Prozess starten, der Ausgaben in die Konsole macht. Bisher habe ich das Problem, dass bei Verbindungsabbruch der Prozess beendet wird. Lässt sich das irgendwie verhindern?

Es ist ärgerlich, einen 12h-Job laufen zu lassen, der dann nach 10h abbricht, weil die SSH-Verbindung verloren geht...
 
benutze am besten einen terminal multiplexer wie screen, dann läuft der Prozess weiter auch wenn die ssh Verbindung abbricht.

zum starten
screen "beliebiges Kommando"

und sollte die Verbindung abgebrochen sein, kann später mit

die session wieder aufgenommen werden.


wenn du eh screen benutzt kannst du aber auch mit strg-a + d von der session "detachen", direkt die Verbindung schleißen und nur verbinden um den output zu überprüfen.

sollte der output wichtig sein kann er über die Option -L geloggt werden.


schau am besten mal in die manpage von screen



Edith behauptet Asseon war zu langsam …
 
Zuletzt bearbeitet:
Nachdem du dich verbunden hast, schreib screen ins Terminal und starte dann deinen Prozess. Danach STRG+A drücken und dann STRG+D.
Danach kannst du die SSH-Verbindung beenden.

Um den Prozess wieder aufzurufen, einfach screen -r eingeben.

Als Alternative zu screen gibt es noch tmux.

Edit: Da war ich mal wieder vieeeel zu langsam.
coffee.png
 
Sofern es sich um einen reinen nicht-interaktiven Hintergrundsjob handelt, würde grundsätzlich sogar `nohup` ausreichen, um das HUP-Signal beim Abbruch der Verbindung abzufangen (damit der Job nicht abbricht), und eine Shell-Umleitung, um die Standardausgabe in eine Datei zu schreiben, z.B.:
Code:
Expand Collapse Copy
nohup COMMAND 1>stdout.log 2>stderr.log &

Wenn du Eingaben machen musst, ist ein Terminal-Multiplexer natürlich die richtige Wahl. Ich rate inzwischen allerdings stark zu `tmux` als modernere Alternative zu `screen` - abgesehen von einigen technischen Vorteilen ist insbesondere die Funktion, mehrere Sessions parallel offen zu halten und per Tastenkombination zwischen Sessions zu wechseln (ctrl-b 0..9, ctrl-b p/n) oder neue Sessions zu erstellen (ctrl-b c) sowie der integrierte serverseitige Scrollback-Buffer (ctrl-b [) sehr praktisch. Dadurch kann man auf einem entfernten System über eine einzelne SSH-Verbindung ebenso effizient arbeiten wie auf einem lokalen System mit einem Terminal-Emulator mit Tabbing-Funktionalität (wobei der gesamte Zustand von tmux natürlich erhalten bleibt, wenn die Verbindung getrennt und später neu aufgebaut wird).
 
  • Thread Starter Thread Starter
  • #7
Danke an alle, ich habe keine Ahnung gehabt, wonach ich eigentlich googlen muss, um zu diesem Ergebnis zu kommen :T
 
Zudem was Kugelfisch sagt kommt noch:

Sessions kann man mit tmux sharen (gilt afaikt auch für screen).
Und schau dir an, dass du vim und tmux "verheiratest". (Stichwort keybindings)
 
Zurück
Oben