Halten Sie einen Prozess am Leben, nachdem Sie sich von einer lokalen (nicht SSH-)Sitzung abgemeldet haben

Halten Sie einen Prozess am Leben, nachdem Sie sich von einer lokalen (nicht SSH-)Sitzung abgemeldet haben

Ist es möglich, einen Serverprozess weiterlaufen zu lassen, nachdem ich mich vom Computer abgemeldet habe?

screenNormalerweise 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 KillUserProcessesist 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=nodieses 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 serviceweiter unten insystemd-run(1).

Antwort2

Ich verwende Debian Stretch und KillUserProcesseses ist auf meinem System standardmäßig deaktiviert, screenwü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.

verwandte Informationen