프로그래밍/리눅스

리눅스(Ubuntu) 에서 Shell Script 서비스를 생성하는 방법

자바조아! 2024. 12. 17. 20:30

Shell 스크립트 작성

# 이부분 주의 해야함 맨 윗줄에는 해당 주석이 있어야함.
#!/bin/bash

# 서비스는 원래 백그라운드로 돌기때문에 nohup이나 & 백그라운드 연산자가 필요 없습니다.
JENKINS_NODE_COOKIE=dontKillMe && java -Xms512m -Xmx2048m -jar -Dspring.profiles.active=prd /var/lib/jenkins/workspace/oasis-api/oasis-api/build/libs/oasis-api-1.0.0-SNAPSHOT.jar

 

서비스 등록

# 해당 위치로 이동
root@oasis:/app# cd /etc/systemd/system

# <서비스명>.service 패턴 파일 생성 C + D 입력하면 생성 됨.
root@oasis:/etc/systemd/system#cat > oasis-api.service
[Unit]
Description=oasis-api service
After=network.target

[Service]
ExecStart=/bin/bash /app/oasis-api-start.sh
User=jenkins
Group=jenkins
Restart=always

[Install]
WantedBy=multi-user.target

# 권한 부여
root@oasis:/etc/systemd/system# chmod 644 oasis-api.service

# 서비스 리로드
root@oasis:/etc/systemd/system# systemctl daemon-reload

# 서비스 활성화 ( 서버 재부팅 이후에도 실행 됨 )
root@oasis:/etc/systemd/system# systemctl enable oasis-api.service

# 서비스 상태 확인
root@oasis:/etc/systemd/system# systemctl status oasis-api.service

# 서비스 실행
root@oasis:/etc/systemd/system# systemctl start oasis-api.service

# 실행이 잘 되지 않을 경우 상세 로그 확인
root@oasis:/etc/systemd/system# sudo journalctl -u oasis-api.service

주의사항

Shell 스크립트는 서비스에 등록되면 백그라운드로 돌기때문에 nohup이나 & 백그라운드 연산자가 필요 없습니다.
오히려 백그라운드 관련 코드를 넣어주면 오류가 발생합니다.