linux systemd 서비스 추가하기

kshired·2023년 12월 25일
0
post-thumbnail

linux에서 특정 서비스를 systemctl 명령어를 통해서 관리하고 싶을 때가 있다.

그 때는 어떻게 해야할까?

systemctl에 등록하기

service 파일 만들기

cd /etc/systemd/system
touch service-name.service

/etc/sytemd/sytem 디렉토리내에 추가하고 싶은 service의 이름으로 service-name.service 파일을 만들면 된다.

service 파일 내용 채우기

[Unit]
Description=서비스 설명

[Service]
Type=서비스 타입 ( simple, forking, oneshot, notify, dbus 등.. )
ExecStart=/path/to/start/script
Restart=on-failure ( 재시작 여부를 설정 )

[Install]
WantedBy=multi-user.target ( 유닛을 등록하기 위한 종속성 검사 )

service-name.service 파일은 위와 같은 데이터를 채우면 된다.

다른 여러가지 옵션은 인터넷에 검색하면 자세히 나오니 그것을 참고하길 바람.

systemctl 명령어

등록된 서비스 시작

systemctl start service-name

등록된 서비스 상태 확인

systemctl status service-name

등록된 서비스 종료

systemctl stop service-name

재부팅 후에도 서비스가 실행되도록 설정

systemctl enable service-name

서비스와 관련된 로그 확인

journalctl -u service-name

트러블 슈팅

Exec Format Error가 발생하는 경우

해당 서비스를 시작하기 위한 쉘 스크립트에 #!/bin/bash 를 추가

A 서비스가 B 서비스에 의존하고 있는 경우

때때로 A 서비스가 실행되기전, B 서비스가 실행되어야하는 경우가 있다. ( 반대로 B 서비스가 종료되기전, A 서비스가 종료되어야하는 경우 )

이럴 때는, 서비스를 정의한 service-name.service 파일에 아래와 같은 내용을 채워주면 된다.

### service-a.service
[Unit]
Description=서비스 설명
BindsTo=service-b.service
After=service-b.service

[Service]
Type=서비스 타입 ( simple, forking, oneshot, notify, dbus 등.. )
ExecStart=/path/to/start/script
Restart=on-failure ( 재시작 여부를 설정 )

[Install]
WantedBy=multi-user.target ( 유닛을 등록하기 위한 종속성 검사 )
  • BindsTo : systemd 개입 없이 갑자기 서비스가 사라진 경우, 해당 유닛도 같이 중지하도록 설정
  • After : 선-후 관계를 설정하여 정의된 서비스가 실행된 후, 해당 서비스가 실행되도록 함.
profile
글 쓰는 개발자

0개의 댓글