우분투 systemd 서비스 (데몬) 만들기

가끔 서버와 관련된 서비스를 제작하다 보면, 스크립트 파일 (.py, .sh, .js 등)을 백그라운드에서 항상 실행시켜야하는 경우가 있다. 이 때, 보통 뒤에 &을 붙혀 실행하는데, 이 경우 쉘 창을 닫으면 프로그램이 종료되는 문제가 생긴다. 따라서 오늘은, 이 스크립트를 systemd에 추가시켜 서비스로 등록하고, 관리하는 방법을 알아보자.

서비스 등록하기

우선, sudo 권한으로 /etc/systemd/system 경로로 진입한 후, 원하는_서비스명.service 파일을 생성한다.

다음으로 다음 내용을 입력하자.

[Unit]
Description=프로그램 설명

[Service]
Type=simple
ExecStart=/usr/bin/python /root/example/run.py
Restart=on-failure
WorkingDirectory=/root/example

[Install]
WantedBy=multi-user.target

이 때, ExecStart에는 환경 변수가 적용되지 않으므로 절대 경로를 입력하자. 가령 node는 /usr/bin/node와 같은 식이다. WorkingDirectory에는 프로그램의 작업 공간을 입력하면 된다.

다음으로, 서비스를 활성화하고 시스템 부트 시 실행되게 해보자.
아래 명령어를 차례대로 입력한다.

sudo systemctl daemon-reload
sudo systemctl start (service-name)
sudo systemctl enable (service-name)

모든 과정이 끝났다. 프로그램이 제대로 동작하는 지 확인하고 싶다면, 터미널에 다음과 같이 입력하자.

sudo systemctl status (service-name)

확인해 보자. 잘 동작하는가? https://sharenote.kr/

서비스 수정하기

혹시라도 서비스를 수정하고 싶다면, 우선 스크립트를 수정한 뒤 다음 명령어를 차례대로 입력한다.

sudo systemctl stop (service-name)
sudo systemctl daemon-reload
sudo systemctl start (service-name)

서비스 삭제하기

서비스를 종료하고 싶다면, 아래 명령어를 입력하자.

sudo systemctl stop (service-name)
sudo systemctl disable (service-name)
sudo rm /etc/systemd/system/(service-name).service
sudo systemctl daemon-reload
Previous post 봉골레 파스타 (Spaghetti alle Vongole) 만들기
Next post KT GiGA Buddy로 메쉬 네트워크 구성하기

관련 글

댓글 남기기