Systemd wird heruntergefahren, wenn das Terminal geschlossen wird

Systemd wird heruntergefahren, wenn das Terminal geschlossen wird

Meine systemd-Dienstdatei trägt den Namen os.serviceund enthält die folgende Konfigurationszeile.

#  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

Wenn ich im Server meine SSH-Verbindung trenne, stirbt der Dienst und es kommt zu502 Bad Gateway. Ich muss SSH verwenden und es ausführen systemctl --user start os.service, damit es funktioniert. Sobald ich mein Terminal schließe, stirbt os.service erneut.

Antwort1

Sie führen den Dienst über Ihren Benutzermanager ( --user) aus und logindhaben die Option „Verweilen“ offensichtlich nicht aktiviert. Daher wird Ihre Sitzung (einschließlich aller darin gestarteten Dienste) geschlossen, wenn Sie sich abmelden.

Um dieses Verhalten zu ändern, müssen SieVerweilen ermöglichen:

sudo loginctl enable-linger $USER

Dadurch wird beim Booten ein Benutzermanager für Sie gestartet und Ihre Dienste bleiben während Ihrer Anmeldesitzungen erhalten.

Ein besserer Ansatz für einen Systemdienst wie diesen besteht darin, ihn als eigenen Benutzer auszuführen, der von der Hauptinstanz von systemd verwaltet wird.

verwandte Informationen