Ist es möglich, einen Serverprozess weiterlaufen zu lassen, nachdem ich mich vom Computer abgemeldet habe?
screen
Normalerweise würde ich , tmux
, oder verwenden nohup
, die alle funktionieren, wenn ich KEIN SSH verwende, sondern den Computer lokal verwende. (Dort läuft auch der Gnome-Desktop.)
Gibt es also eine Möglichkeit, einen Serverprozess zu starten, wenn Sie lokal bei einem Computer angemeldet sind?
Antwort1
Ab systemd 230 KillUserProcesses
ist standardmäßig aktiviert:
https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338
Sie können dies ändern, indem Sie es bearbeiten /etc/systemd/logind.conf
, z. B. indem Sie KillUserProcesses=no
dieses Verhalten global deaktivieren oder KillExcludeUsers=<your-username>
Ihren Benutzernamen von diesem Verhalten ausschließen.
Oder Sie können dies ad hoc umgehen, indem Sie Ihren Serverprozess mit starten systemd-run --scope --user <executable>
. Weitere Einzelheiten hierzu finden Sie Example 5. Start screen as a user service
weiter unten insystemd-run(1).
Antwort2
Ich verwende Debian Stretch und KillUserProcesses
es ist auf meinem System standardmäßig deaktiviert, screen
würde aber eine Abmeldung nicht überstehen. Nach einigen Experimenten scheint Folgendes die Bildschirmsitzung nach der lokalen Abmeldung am Laufen zu halten:
screen -m
oder wenn Sie sich sofort trennen möchten
screen -m -d
Ich bin nicht sicher, warum das so ist, aber bei mir scheint es zu funktionieren.
Bearbeiten:
Ich habe noch ein paar Tests durchgeführt und es scheint, dass das Ausführen eines Bildschirms mit einem Befehl nicht funktioniert. Ich habe 4 Sitzungen gestartet und mich bei Bedarf von ihnen getrennt:
Vor dem Abmelden:
user 31365 1 0 16:20 ? 00:00:00 SCREEN -S mdc -m -d vim
user 31376 1 0 16:20 ? 00:00:00 SCREEN -S md -m -d
user 31391 1 0 16:20 ? 00:00:00 SCREEN -S mc -m vim
user 31399 1 0 16:21 ? 00:00:00 SCREEN -S m -m
Nach dem Abmelden und erneuten Anmelden:
user 31376 1 0 16:20 ? 00:00:00 SCREEN -S md -m -d
user 31399 1 0 16:21 ? 00:00:00 SCREEN -S m -m
Es sieht so aus, als ob die beiden mit einem Befehl gestarteten Instanzen während des Abmeldens beendet wurden. Ich habe mich an die verbleibenden beiden Sitzungen angeschlossen und VIM gestartet, dann die Verbindung getrennt und mich wieder abgemeldet. Nach der erneuten Anmeldung liefen die Sitzungen noch und VIM lief in jeder Sitzung noch.