Systemd завершает работу при закрытии терминала

Systemd завершает работу при закрытии терминала

Мой файл службы systemd имеет имя os.serviceи содержит следующую строку конфигурации.

#  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

На сервере, когда я отключаю свое SSH-соединение, служба умирает и приводит к502 Неверный шлюз. Мне нужно systemctl --user start os.serviceзапустить ssh и запустить его, чтобы он заработал. Опять же, как только я закрываю свой терминал, os.service снова умирает.

решение1

Вы запускаете службу из своего менеджера пользователей ( --user), и, по всей видимости, logindу вас не включена задержка. В результате ваш сеанс (включая любые запущенные внутри него службы) закрывается всякий раз, когда вы выходите из системы.

Чтобы изменить это поведение, вам нужновключить затяжной:

sudo loginctl enable-linger $USER

Это запустит менеджер пользователей при загрузке и позволит вашим службам пережить сеансы входа в систему.

Лучшим подходом для такой системной службы будет запуск ее от имени собственного пользователя, управляемого основным экземпляром systemd.

Связанный контент