터미널이 닫히면 시스템이 종료됩니다.

터미널이 닫히면 시스템이 종료됩니다.

내 시스템 서비스 파일의 이름은 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

이렇게 하면 부팅 시 사용자 관리자가 시작되고 서비스가 로그인 세션에서 유지될 수 있습니다.

이와 같은 시스템 서비스에 대한 더 나은 접근 방식은 실제로 기본 시스템 인스턴스에서 관리되는 자체 사용자로 실행하는 것입니다.

관련 정보