ターミナルが閉じられると 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不正なゲートウェイ起動して動作させるには、 ssh を実行して実行する必要がありますsystemctl --user start os.service。ターミナルを閉じると、os.service が再び停止します。

答え1

ユーザー マネージャー ( --user) からサービスを実行していますが、どうやら ではlogind残留が有効になっていないようです。その結果、ログアウトするたびにセッション (その中で開始されたサービスを含む) が閉じられます。

この行動を変えるには、残留を有効にする:

sudo loginctl enable-linger $USER

これにより、起動時にユーザー マネージャーが起動し、ログイン セッション中もサービスが継続できるようになります。

このようなシステム サービスの場合、メインの systemd インスタンスによって管理される独自のユーザーとしてサービスを実行する方がよい方法です。

関連情報