Systemd desligando quando o terminal é fechado

Systemd desligando quando o terminal é fechado

Meu arquivo de serviço systemd está no nome os.servicee possui a seguinte linha de configuração.

#  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

No servidor, quando eu desconecto minha conexão ssh, o serviço morre e resulta em502 Bad Gateway. Eu tenho que ssh e correr systemctl --user start os.servicepara iniciar e fazer funcionar. Novamente, quando fecho meu terminal, os.service morre novamente.

Responder1

Você está executando o serviço a partir do seu gerenciador de usuários ( --user) e, aparentemente, o serviço logindnão está habilitado para você. Como resultado, sua sessão (incluindo quaisquer serviços iniciados dentro dela) será encerrada sempre que você sair.

Para mudar esse comportamento, você precisaativar persistente:

sudo loginctl enable-linger $USER

Isso iniciará um gerenciador de usuários para você na inicialização e permitirá que seus serviços sobrevivam às sessões de login.

Uma abordagem melhor para um serviço de sistema como este é executá-lo como seu próprio usuário, gerenciado pela instância principal do systemd.

informação relacionada