Systemd se apaga cuando la terminal está cerrada

Systemd se apaga cuando la terminal está cerrada

Mi archivo de servicio systemd está a nombre de os.servicey tiene la siguiente línea de configuración.

#  This systemd service file will help supervise os service
[Unit]
Description=Os Server
After= network.target

[Service]

# Preferably configure a non-privileged user
# User=deploy
# Group=deploy

# Environment variables shared across the config
#EnvironmentFile=  # environment file to be used, includes RACK_ENV
EnvironmentFile=/home/deploy/test/shared/.env
SyslogIdentifier=test
PIDFile=/home/deploy/test/shared/tmp/server.pid

# Specify the path to your test application root
# WorkingDirectory=/home/deploy/test/

# Start/Reload/Stop syntax
ExecStart=/home/deploy/test/current

# TimeoutSec=15
# TimeoutStopSec=10
RestartSec=5s           

# Restart os, always if it dies for some reason
Restart=always

[Install]
WantedBy=multi-user.target

En el servidor, cuando desconecto mi conexión ssh, el servicio muere y da como resultado502 Puerta de enlace no válida. Tengo que hacer ssh y ejecutar systemctl --user start os.servicepara iniciar y hacer que funcione. Nuevamente, una vez que cierro mi terminal, os.service vuelve a morir.

Respuesta1

Está ejecutando el servicio desde su administrador de usuarios ( --user) y aparentemente logindno tiene habilitada la permanencia. Como resultado, su sesión (incluido cualquier servicio iniciado dentro de ella) se cierra cada vez que cierra la sesión.

Para cambiar este comportamiento es necesariopermitir persistir:

sudo loginctl enable-linger $USER

Esto iniciará un administrador de usuarios al iniciar y permitirá que sus servicios sobrevivan a sus sesiones de inicio de sesión.

Un mejor enfoque para un servicio del sistema como este es ejecutarlo como su propio usuario, administrado por la instancia principal de systemd.

información relacionada