O serviço do sistema em execução como usuário é encerrado no logout

O serviço do sistema em execução como usuário é encerrado no logout

Tenho um serviço de sistema executado para usuários selecionados. O nome é serv@<uid>( <uid>é o UID do usuário). Quero compartilhar os limites de recursos do usuário com o serviço (colocá-lo em user-<uid>.slice) e também quero usar as permissões dele.

/etc/systemd/system/[email protected]

[Unit]
Description=My service for user %i

[Service]
Type=simple
ExecStart=/usr/local/bin/serv.sh
Restart=always
User=%i
Slice=user-%i.slice
SuccessExitStatus=0 255 SIGKILL SIGTERM

[Install]
WantedBy=multi-user.target

Quando o usuário efetua logout, o serviço é encerrado usando SIGTERM. Por que o serviço não é reiniciado? Como posso configurá-lo para que o serviço não seja encerrado?

Responder1

Para mim a solução foi loginctl enable-linger username. Sem isso, o serviço morreria quando o usuário se desconectasse.https://wiki.archlinux.org/index.php/Systemd/User#Automatic_start-up_of_systemd_user_instances

Responder2

Você pode alterar a configuração do logind:

/etc/systemd/logind.conf

[Login]
KillUserProcesses=no

Isso também altera o comportamento de outros serviços e processos em segundo plano (como screen, tmux). Veredição #3483;


Corra systemctl restart systemd-logindatrás disso.

informação relacionada