내 시스템 서비스 파일의 이름은 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
이렇게 하면 부팅 시 사용자 관리자가 시작되고 서비스가 로그인 세션에서 유지될 수 있습니다.
이와 같은 시스템 서비스에 대한 더 나은 접근 방식은 실제로 기본 시스템 인스턴스에서 관리되는 자체 사용자로 실행하는 것입니다.