Mantener vivo un proceso después de cerrar sesión en la sesión local (no ssh)

Mantener vivo un proceso después de cerrar sesión en la sesión local (no ssh)

¿Es posible mantener un proceso del servidor en ejecución después de cerrar sesión en la máquina?

Normalmente usaría screen, tmuxo nohup, los cuales funcionan cuando NO estoy usando ssh, pero estoy usando la máquina localmente. (También está ejecutando el escritorio Gnome).

Entonces, ¿hay alguna forma de iniciar un proceso de servidor cuando inicia sesión localmente en una máquina?

Respuesta1

A partir de systemd 230, KillUserProcessesestá habilitado de forma predeterminada:

https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338

Puede cambiar esto editando /etc/systemd/logind.conf, por ejemplo, configurando KillUserProcesses=nopara deshabilitar este comportamiento globalmente o configurando KillExcludeUsers=<your-username>para excluir su nombre de usuario de este comportamiento.

O puede solucionar este problema de forma ad hoc iniciando el proceso de su servidor usando systemd-run --scope --user <executable>. Puede encontrar más detalles sobre esto en Example 5. Start screen as a user servicela parte inferior desystemd-ejecutar(1).

Respuesta2

Estoy ejecutando Debian Stretch y KillUserProcessesestá deshabilitado de forma predeterminada en mi sistema, pero screenno sobreviviría al cerrar sesión. Después de un poco de experimentación, lo siguiente parece mantener la sesión de pantalla ejecutándose después de cerrar sesión localmente:

screen -m

o si desea separarse de inmediato

screen -m -d

No estoy seguro de por qué es así, pero parece funcionar para mí.

Editar:

Hice algunas pruebas más y parece que la pantalla al ejecutar un comando no sobrevive. Comencé 4 sesiones y me separé de ellas si era necesario:

Antes de cerrar sesión:

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

Después de cerrar sesión y volver a iniciarla:

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

Parece que las dos instancias iniciadas con un comando terminaron durante el cierre de sesión. Me conecté a las dos sesiones restantes e inicié VIM, luego me desconecté y cerré la sesión nuevamente. Después de volver a iniciar sesión, las sesiones seguían ejecutándose y VIM seguía ejecutándose en cada sesión.

información relacionada