Linux

[Linux] systemd에 서비스 등록후 사용하기

Jeong Jeon
반응형

systemcd에 자주 사용하는 service를 등록시켜놓고 관리할수있다.

편리하게 사용할 수 있으니, 자주 쓰는것들을 등록시켜놓으면 좋을것같다.

예를들어 tomcat start / stop 같은....

 

등록하는 방법은 /etc/systemd/system/service name.service 에 등록하면 된다.

 

기본 틀을 적어놓자.

[Unit]

Description=tomcat 8
After=network.target syslog.target

[Service]

Type=forking
User=tomcat4
Group=tomcat4

ExecStart=/usr/local/server/apache-tomcat-8.5.43/bin/startup.sh start
ExecStop=/usr/local/server/apache-tomcat-8.5.43/bin/shutdown.sh stop

[Install]
WantedBy=multi-user.target

 

각각 어떤 의미를 하는지 정리해두자.

<설정 항목>

Unit
  - Description: 해당 유닛에 대한 설명
  - Requires : 상위 의존성 구성, 포함하는 유닛이 정상적이어야 실행
  - RequiresOverridable : 상위 의존성 구성이며 이것이 실패하더라도 무시하고 유닛을 시작
  ...

Service
  - Type: [simple | forking | oneshot | notify | dbus] 유닛의 타입
  - Environment: 해당 유닛에서 사용할 환경 변수 선언
  - ExecStart: 시작 명령을 정의
  - ExecStop: 중지 명령을 정의

Install
  - WantedBy: 유닛을 등록하기 위한 종속성 검사. 유닛을 등록할 때 등록에 필요한 유닛을 지정

 

이제 서비스에 등록해두었으니 사용해보자

#시작
systemctl start servicename
#종료
systemctl stop servicename
#상태 확인
systemctl status servicename
#서비스 관련 로그확인
journalctl -u servicename

 

여기서 의문점이 생긴게 하나 있었다.

하위 두개의 경로에 똑같이 systemd/system이 있다.

경로 1). /etc/systemd/system

경로 2). /usr/lib/systemd/system

 

 

각각 어떤 차이가 있는지 알아보았다.

/usr/lib/systemd/system

OS 벤더사가 관리하는 영역

배포 저장소(Distribution repository)에서 다운로드되는 패키지로 제공되는 파일들이 위치한다.

/etc/systemd/system

시스템 관리자가 관리하는 영역

시스템 특정(System-specific)한 유닛들이 위치한다.

벤더사에서 제공하는 유닛들중 자신의 시스템에 맞게 수정하고 싶은 내용이 있을 경우 /etc/systemd/system에 유닛을 추가하면 해당 유닛을 오버라이드하게 된다. (/etc/systemd/system에 없는 유닛들은 벤더사에서 제공하는 기본 유닛을 사용한다.)

 

엇...위의 내용을 보면 /etc/systemd/system에 넣어서 사용해야했는데 /usr/lib/systemd/system에 두고 사용했다..

크흠... 

반응형