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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von montagskind (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
nohup apt-get dist-upgrade &

von 50c (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Das Programm screen ist dein Freund...

von Daniel F. (df311)


Bewertung
2 lesenswert
nicht lesenswert
tmux forever ;-)

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Daniel A. schrieb:
> Systemd's kaputtes Verhalten

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

von ui (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel F. schrieb:
> tmux forever ;-)

so schauts aus!

von Peter II (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
tmux regelt.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Die Default-Einstellung ist also offenbar richtig herum

Default ist aber YES

Defaults to "yes",

von Peter II (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.