Mantenha um processo ativo após sair da sessão local (não ssh)

Mantenha um processo ativo após sair da sessão local (não ssh)

É possível manter um processo do servidor em execução após sair da máquina?

Normalmente eu usaria screen, tmux, ou nohup, todos funcionando quando NÃO estou usando ssh, mas estou usando a máquina localmente. (Ele também está executando o Gnome Desktop.)

Então, existe alguma maneira de iniciar um processo de servidor quando você está logado localmente em uma máquina?

Responder1

A partir do systemd 230, KillUserProcessesestá habilitado por padrão:

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

Você pode alterar isso editando /etc/systemd/logind.conf, por exemplo, configurando KillUserProcesses=nopara desativar esse comportamento globalmente ou definindo KillExcludeUsers=<your-username>para excluir seu nome de usuário desse comportamento.

Ou você pode contornar isso de forma ad hoc, iniciando o processo do servidor usando systemd-run --scope --user <executable>. Você pode encontrar mais detalhes sobre isso na Example 5. Start screen as a user serviceparte inferior doexecução do systemd (1).

Responder2

Estou executando o Debian Stretch e KillUserProcessesestá desabilitado por padrão em meu sistema, mas screennão sobreviveria a um logout. Após algumas experiências, o seguinte parece manter a sessão de tela em execução após o logout local:

screen -m

ou se você deseja separar imediatamente

screen -m -d

Não sei por que esse é o caso, mas parece funcionar para mim.

Editar:

Fiz mais alguns testes e parece que a execução da tela com um comando não sobrevive. Comecei 4 sessões e me desliguei delas se necessário:

Antes de sair:

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

Depois de sair e entrar novamente:

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 as duas instâncias iniciadas com um comando foram encerradas durante o logout. Anexei as duas sessões restantes e iniciei o VIM, depois desconectei e efetuei logout novamente. Depois de fazer login novamente, as sessões ainda estavam em execução e o VIM ainda estava em execução em cada sessão.

informação relacionada