Forum: PC-Programmierung Linux: Updateprozess im Hintergrund laufen lassen


von montagskind (Gast)


Lesenswert?

Hallo,

ich verbinde mich mit Putty per SSH mit einem anderem PC (Linux). Wenn 
ich dort ein update starte und Putty mitten drin schließe, wird auch das 
Updateten abgeschossen. Gibt es eine Möglichkeit das Update zu starten 
und dann ohne Putty weiter laufen zu lassen?

von (prx) A. K. (prx)


Lesenswert?

nohup apt-get dist-upgrade &

von 50c (Gast)


Lesenswert?

Das Programm screen ist dein Freund...

von Daniel F. (df311)


Lesenswert?

tmux forever ;-)

von Daniel A. (daniel-a)


Lesenswert?

Falls deine Linux distribution Systemd verwendet, und screen und tmux 
beim logout auch beendet werden sollten ist es möglich, dass die 
Distribution Systemd's kaputtes Verhalten beim ausloggen nicht repariert 
hat. Mehr dazu hier: 
https://unix.stackexchange.com/questions/171503/tmux-session-killed-when-disconnecting-from-ssh

Da ich Systemd nicht verwende, und deine Linux distribution nicht kenne, 
kann ich jedoch nicht ob das Problem immernoch besteht oder ob es dich 
mit deiner Distribution überhaubt betrifft.

von MaWin (Gast)


Lesenswert?

Daniel A. schrieb:
> Systemd's kaputtes Verhalten

Blah.
Einfach dieses Verhalten abschalten, wenn man es nicht möchte.

von ui (Gast)


Lesenswert?

Daniel F. schrieb:
> tmux forever ;-)

so schauts aus!

von Peter II (Gast)


Lesenswert?

Daniel A. schrieb:
> Systemd's kaputtes Verhalten

eigentlich macht es Systemd richtig, das Prozesse nach dem ausloggen 
noch laufen will man nicht haben.

Zum Starten von Background Prozessen gibt es andere Lösungen.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

tmux regelt.

von (prx) A. K. (prx)


Lesenswert?

Man mag systemd lieben oder hassen, der trägt aber keine Schuld daran, 
dass Prozesse wegfliegen, wenn ihr Terminal abschaltet. SIGHUP und die 
entsprechende Reaktion existiert seit der Anfangszeit von UNIX. Eben 
deshalb gibts schon genau so lange das "nohup" Kommando.

: Bearbeitet durch User
von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Ansonsten kann man den Prozess auch folgendermaßen nachträglich in den 
Hintergrund legen:

Strg-Z drücken
Befehl "bg" eingeben.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Man mag systemd lieben oder hassen, der trägt aber keine Schuld daran,
> dass Prozesse wegfliegen, wenn ihre Konsole abschaltet. SIGHUP und die
> entsprechende Reaktion existiert seit der Anfangszeit von UNIX.

systemd geht aber noch einen schritt weiter, und killt hart alles 
Prozesse des users wenn sie sie SIGHUP nicht reagieren. (zumindest im 
Default)

von (prx) A. K. (prx)


Lesenswert?

Md M. schrieb:
> Ansonsten kann man den Prozess auch folgendermaßen nachträglich in den
> Hintergrund legen:

Aber die fliegen trotzdem weg, wenn das Terminal Schluss macht, weil 
immer noch damit verbunden. "nohup" trennt den Prozess vom Terminal ab 
und erst dadurch läuft der Prozess auch ohne Terminal weiter.

Nachträglich geht das über die Job Control der Shell, mit "disown".

: Bearbeitet durch User
von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

A. K. schrieb:
> Md M. schrieb:
>> Ansonsten kann man den Prozess auch folgendermaßen nachträglich in den
>> Hintergrund legen:
>
> Aber die fliegen trotzdem weg, wenn das Terminal Schluss macht, weil
> immer noch damit verbunden.

Hatte ich eigentlich auch vermutet, deshalb hab ich es vorm posten auch 
ausprobiert. Die Prozesse (hab ping und wget probiert) liefen noch nach 
dem wiedereinloggen.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Aber die fliegen trotzdem weg, wenn das Terminal Schluss macht, weil
> immer noch damit verbunden. "nohup" trennt den Prozess vom Terminal ab
> und erst dadurch läuft der Prozess auch ohne Terminal weiter.

auch nicht zwingend bei Systemd - er räumt ordentlich auf.

von (prx) A. K. (prx)


Lesenswert?

Md M. schrieb:
> Hatte ich eigentlich auch vermutet, deshalb hab ich es vorm posten auch
> ausprobiert. Die Prozesse (hab ping und wget probiert) liefen noch nach
> dem wiedereinloggen.

Dazu existiert eine Bash-Einstellung. Je nach Einstellung laufen 
Prozesse bei regulärer Beendigung der Shell weiter.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> auch nicht zwingend bei Systemd - er räumt ordentlich auf.

Grad in ziemlich aktuellem CentOS 7 ausprobiert. Programm gestartet, mit 
^Z suspendiert, mit "bg" aktiviert und mit "disown" abgehängt. Dann 
Shell beendet: läuft weiter.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Grad in ziemlich aktuellem CentOS 7 ausprobiert. Programm gestartet, mit
> ^Z suspendiert, mit "bg" aktiviert und mit disown" abgehängt Dann Shell
> beendet: läuft weiter.

kommt ja darauf an wie systemd konfiguriert ist.

https://linux.slashdot.org/story/16/05/29/212204/systemd-starts-killing-your-background-processes-by-default

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Grad in ziemlich aktuellem CentOS 7 ausprobiert. Programm gestartet, mit
> ^Z suspendiert, mit "bg" aktiviert und mit "disown" abgehängt. Dann
> Shell beendet: läuft weiter.

nachtrag:

https://www.freedesktop.org/software/systemd/man/logind.conf.html

KillUserProcesses=

von (prx) A. K. (prx)


Lesenswert?

/etc/systemd/logind.conf:
#KillUserProcesses=no

Die Default-Einstellung ist also offenbar richtig herum, d.h. entspricht 
dem klassischen Verhalten.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Die Default-Einstellung ist also offenbar richtig herum

Default ist aber YES

Defaults to "yes",

von Peter II (Gast)


Lesenswert?

steht ja sogar in der doku

Note that setting KillUserProcesses=yes will break tools like screen(1) 
and tmux(1), unless they are moved out of the session scope. See example 
in systemd-run(1).

Beitrag #5049338 wurde vom Autor gelöscht.
von Peter II (Gast)


Lesenswert?

A. K. schrieb im Beitrag #5049338:
> Und jetzt? Wenn Praxis != Theorie, was stimmt dann? ;-)

dürfte auch abhängig vom KillMode sein, damit kann man das alte 
verhalten wieder herstellen.

> Was normaler User, nicht "root" für den es KillExcludeUsers gibt.
was meinst du damit?

von (prx) A. K. (prx)


Lesenswert?

1
man logind.conf
2
3
       KillUserProcesses=
4
           Takes a boolean argument. Configures whether the processes of a user should be killed
5
           when the user completely logs out (i.e. after the user's last session ended). Defaults
6
           to "no".
7
8
           Note that setting KillUserProcesses=1 will break tools like screen(1).

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> was meinst du damit?
1
       KillOnlyUsers=, KillExcludeUsers=
2
           These settings take space-separated lists of usernames that influence the effect of
3
           KillUserProcesses=. If not empty, only processes of users listed in KillOnlyUsers=
4
           will be killed when they log out entirely. Processes of users listed in
5
           KillExcludeUsers= are excluded from being killed.  KillExcludeUsers= defaults to
6
           "root" and takes precedence over KillOnlyUsers=, which defaults to the empty list.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Peter II schrieb:
>> was meinst du damit?
>        KillOnlyUsers=, KillExcludeUsers=

das hatte ich noch nicht gelesen, das es für root anders ist.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> dürfte auch abhängig vom KillMode sein, damit kann man das alte
> verhalten wieder herstellen.

Wo wird das konfiguriert? Ich fand dazu zwar Doku, die auch erwähnt wozu 
es gut ist, nicht aber, wo das stehen würde.

Jedenfalls gilt (hier) für KillUserProcesses `Defaults to "no"´,
also alles in Butter.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Wo wird das konfiguriert?

da bin ich jetzt auch überfragt. (hatte noch nie eine Grund das zu 
ändern). Laut doku bei jedem Service, welcher Service aber für 
session-logout zuständig ist kann ich nicht sagen.

von (prx) A. K. (prx)


Lesenswert?

Debian 9 "man": Defaults to "yes".
Ubuntu 16.04: Defaults to "no".
Redhat/CentOS 7: Defaults to "no".

So macht man sich Freunde. ;-)

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Das reale Verhalten von Debian 9: Mit #KillUserProcesses=no (Default) 
wird der Prozess nicht abgeschossen. Das passiert nur mit explizitem 
KillUserProcesses=yes.

Also alles halb so wild. Mir scheint, das war mal anders, hatte etwas 
Wirbel verursacht und sie sind wieder retour. Haben aber vergessen, die 
Doku mitzuziehen.

PS: Habe kein Debian gefunden, in dem es anders gewesen wäre.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.