El servicio del sistema que se ejecuta como usuario finaliza al cerrar sesión

El servicio del sistema que se ejecuta como usuario finaliza al cerrar sesión

Tengo un servicio del sistema que se ejecuta para usuarios seleccionados. El nombre es serv@<uid>( <uid>es el UID del usuario). Quiero compartir los límites de recursos del usuario con el servicio (colocarlos en user-<uid>.slice) y también quiero usar sus permisos.

/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

Cuando el usuario cierra sesión, el servicio finaliza mediante SIGTERM. ¿Por qué no se reinicia el servicio? ¿Cómo puedo configurarlo para que no se cancele el servicio?

Respuesta1

Para mí la solución fue loginctl enable-linger username. Sin esto, el servicio moriría cuando el usuario cerrara sesión.https://wiki.archlinux.org/index.php/Systemd/User#Automatic_start-up_of_systemd_user_instances

Respuesta2

Puede cambiar la configuración de inicio de sesión:

/etc/systemd/logind.conf

[Login]
KillUserProcesses=no

Esto también cambia el comportamiento de otros servicios y procesos en segundo plano (como screen, tmux). Vernúmero 3483;


Corre systemctl restart systemd-loginddespués de eso.

información relacionada