mlops, devops

service 생성 후 systemd에 등록

sonnson 2022. 4. 1. 04:40

 

ex) /home/run-server.sh 스크립트를 서비스로 등록해서 재부팅 시에도 항상 서비스가 뜰 수 있게 하고자 함

 

1. service 파일 생성

  • 기본 서비스 위치 : /etc/systemd/system
  • root 권한으로 실행
    sudo su
  • cd /etc/systemd/system
  • vi ${SERVICE_NAME}
    • 예제 : /etc/systemd/system/example.service
      • Requires : 필요한 타겟
      • After : 의존성이 있는 타겟 (이 타겟들이 실행된 후에, 서비스를 띄움)
      • ExecStart : 등록할 스크립트 위치를 기입 (ex- /home/run-server.sh)
[Unit]
Description= ${서비스 설명}
Requires=network.target
After=network.target
 
[Service]
Type=simple
ExecStart=/home/run-example.sh               # 작성한 서비스 실행 스크립트
WorkingDirectory=/home
User=1100
Group=1100
TimeoutStopSec=5
KillMode=process
KillSignal=SIGTERM
PrivateTmp=false
Restart=on-failure
RestartSec=10
LimitNOFILE=5242880
LimitNPROC=131072
 
[Install]
WantedBy=multi-user.target

 

2. service를 인식할 수 있도록 systemd에 등록 (systemctl)

  • service파일을 systemd에 인식
        sudo systemctl daemon-reload

 

3. 서비스를 시작 & 서버 재부팅 시 자동으로 시작

  • 서비스 시작 / 재시작
        sudo systemctl start example.service
        sudo systemctl restart example.service
  • 서버 재부팅 시 자동으로 시작
        sudo systemctl enable example.service

 

4. 서비스 상태 확인

sudo systemctl status example.service

sudo journalctl --output cat -u ${SERVICE_NAME} -f