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