Linux 15.052 Themen, 107.240 Beiträge

SSH: Wie Login/Session nicht abbrechen (??)

gerfield / 8 Antworten / Baumansicht Nickles

Hi,

ok, wie formuliert man meine Frage kurz?

Wenn ich einen größeren Download habe, würde ich den gern gleich auf den Server laden - damit kann - was zwar nie passiert ;-) - auch mal ein Client abstürzen kann, denn jener Download läuft ja weiter auf dem Server.... zudem hat das auch den Vorteil, dass ich keinen Download später von dem Client auf den Server schieben muss.

Denkste! Sobald ich das Konsolenfenster schließe, indem der download per SSH läuft, bricht dieser ab (da Session beendet).
Kann ich irgendwie die Session/den Download weiter laufen lassen, auch wenn das Konsolenfenster mit der SSH-Verbindung zu ist?

Freue mich auf Antworten ;-)

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
Zaphod gerfield „SSH: Wie Login/Session nicht abbrechen (??)“
Optionen

man screen, Stichwort detach session.
Alternativ man nohup.
HTH, Z,

bei Antwort benachrichtigen
KarstenW gerfield „SSH: Wie Login/Session nicht abbrechen (??)“
Optionen

Du kannst versuchen den Prozess als Hintergrundprozess zu starten.
Einfach das Kaufmanns-Und & an die Befehlszeile hinten ranhängen.

Ich weiß da auch nicht so genau Bescheid. Wenn du einen neuen Prozess (neues Programm) startest ,dann startet die Bash (oder eine andere Shell) mit Hilfe des Systemcalls fork() einen neuen Prozess. Dieser neue Prozess wird Kindprozess genannt und ist eine exakte Kopie des Elternprozesses , der Bash also.
Oder anders ausgedrückt, die Bash startet eine neue Bash (Kindprozess) und dieser Kindprozess (Bash) wird dann mit Hilfe einer der execl() Systemcalls durch den eigentlichen Prozess, dem Downloadprozess ersetzt.

Wenn du den Elternproztess killst, dann wird automatisch auch der Kindprozess gekillt.
Keine Ahnung ob das Kaufmanns-Und & hilft.

Du müßtest also den Downloadprozess irgendwie losgelöst von der Shell starten.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
DaVo KarstenW „Du kannst versuchen den Prozess als Hintergrundprozess zu starten. Einfach das...“
Optionen

> Einfach das Kaufmanns-Und & an die Befehlszeile hinten ranhängen.

Der so gestartete Prozess läuft immer noch als Kind der ssh-session!

Vorder- und Hintergrund hat nichts mit der Stellung inerhalb der Prozesshirachie zu tun.

Die von Zaphod gezeigten Wege sind AFAIK die einzigen... (oder?)

Daniel
bei Antwort benachrichtigen
KarstenW DaVo „ Einfach das Kaufmanns-Und an die Befehlszeile hinten ranhängen. Der so...“
Optionen

PS: Das Programm wget hat eine -b Option um wget gleich nach dem Start im Hintergrund laufen zu lassen.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
KarstenW DaVo „ Einfach das Kaufmanns-Und an die Befehlszeile hinten ranhängen. Der so...“
Optionen

@davo

Stimmt nicht ganz:

http://www.informatik.uni-frankfurt.de/doc/ux01/paragraph3_6_4_2_2.html

Hintergrundprozesse

UNIX bietet zusätzliche Funktionalitäten, die den Benutzern die Ausführung von Prozessen im Hintergrund ermöglichen. Im Zusammenhang mit Hintergrundprozessen ist folgendes zu beachten:

* es sollten nur solche Prozesse im Hintergrund ausgeführt werden, die nichtauf die Standardausgabe schreiben und auch keine Eingabe erwarten;
* Hintergrundprozesse haben keinen Zugriff auf die Standardeingabe, sie können nicht durch die Tastenkombination abgebrochen werden;
* zum Zeitpunkt des Ausloggens noch laufende Hintergrundprozesse des Benutzers werden nicht aus dem System entfernt.

Um einen Prozeß im Hintergrund auszuführen, gibt es mehrere Möglichkeiten. Beim Aufrufen eines Programmes kann die Ampersand (&)-Notation verwendet werden:

hera>prog2 &

die C-Shell bestätigt den Start des Hintergrundprozesses z. B. mit folgender Meldung:

1 23460

wobei in eckigen Klammern die vorerwähnte kleine Integerzahl und danach die Prozeßid (PID) angegeben werden, letztere wird zur Verwaltung des Prozesses durch das System benutzt. Prozesse, die von der Shell durch eine Integerzahl nummer verwaltet werden, können durch Eingabe von fg %nummer in den Vordergrund geholt bzw. bg %nummer in den Hintergrund gestellt werden.

Beispiel: (Fortsetzung von oben)

hera>

(keine Auswirkung, 'prog2' läuft im Hintergrund)

hera>fg %1

('prog2' läuft jetzt im Vordergrund)

hera>

stopped

hera>

(Eingabe hat 'prog2' gestoppt)

Mit

hera> bg %1

wird die Ausführung von 'prog2' im Hintergrund fortgesetzt und durch Eingabe von

hera>prog1

'prog1' quasiparallel im Vordergrund ausgeführt:

10:02:30

10:02:40

...

Nach Stoppen von 'prog1' durch

hera>

befindet sich kein Prozeß mehr im Vordergrund. Mit jobs gelangt man zur Aufstellung der von der Shell verwalteten Prozesse:

hera>jobs

Zur Beendigung beider Prozesse kann der Shell-Befehl kill benutzt werden:

hera>kill %1%2

Dabei wird folgende Rückmeldung ausgegeben:
....

Müßte bei der bash-Shell in etwa auch so sein.


Ich habe bis jetzt aber noch nicht herausgefunden, was da im Detail passiert, wenn man einen Prozess im Hintergrund laufen läßt.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
DaVo KarstenW „@davo Stimmt nicht ganz:...“
Optionen

Du hast mich nicht richtig verstanden. :-)

Wenn du aus einer ssh-session irgendein Programm startest, befindet sich dieser gestartete Prozess hirachisch unterhalb der ssh-session.
Wird ssh nun beendet, werden automatisch alle Prozesse unterhalb von ssh auch beendet. Das hat mit Vorder- und Hintergrund schlicht nichts zu tun.

Daniel
bei Antwort benachrichtigen
DaVo Nachtrag zu: „Du hast mich nicht richtig verstanden. :- Wenn du aus einer ssh-session...“
Optionen
Daniel
bei Antwort benachrichtigen
DaVo Nachtrag zu: „Du hast mich nicht richtig verstanden. :- Wenn du aus einer ssh-session...“
Optionen

...und noch mehr...
Ein wenig runter scrollen zu Shell und Prozesse, das wichtige kommt bei fork und exec.

Daniel
bei Antwort benachrichtigen