운영체제

[Linux] CentOS 7 서비스 설정 항목

헹창 2020. 7. 14.
반응형

[Linux] CentOS 7 서비스 설정 항목

 

 

서비스 파일을 생성할 때 작성하는 설정 항목들을 살펴보자.

 

 

[ UNIT ]

Description

해당 유닛에 대한 상세한 설명을 포함한다.

 

 

Before, After

유닛 시작의 전후 관계를 설정한다. 해당 설정은 "Requires=" 설정과는 독립적이다.

"Before=" 에 나열된 유닛이 시작되기 전에 실행하고 "After=" 은 해당 유닛이 시작된 이후 나열된 유닛이 실행한다. 시스템 종료 시에는 반대 순서로 동작한다.

 

 예제)

[Unit]
Description=tomcat 9
After=network.target syslog.target

 

 

 

 

[ Service ]

Type=[ simple | forking | oneshot | notify | dbus ]

유닛 타입을 선언한다.

 

simple
(기본값)
유닛이 사직된 경우 즉시 systemd는 유닛의 시작이 완료됐다고 판단한다.
다른 유닛과 통신하기 위해 소켓을 사용하는 경우 이 설정을 사용하면 안된다.
forking 자식 프로세스 생성이 완료되는 단계까지를 systemd가 시작이 완료되었다고 판단하게된다.
부모 프로세스를 추적할 수 있도록 PIDFile = 필드에 PID 파일 을 선언해 주어야한다.
oneshot simple 과 다소 유사하지만 단일 작업을 수행하는데 적합한 타입이다.
또한 실행 후 해당 실행이 종료되더라도 ReaminAfterExit=yes 옵션을 통해 유닛을 활성화 상태로 간주할 수 있다.
notify simple 과 동일하다. 다만 유닛이 구동되면 systemd 에 시그널을 보낸다.
이때 시그널에 대한 내용은 libsystemd-daemon.so 에 선언되어 있다.
dbus D-Bus에 지정된 BusName이 준비될 때까지 대기한다.
즉, D-Bus가 준비된 후에 유닛이 사직되었다고 간주한다.

 

 

Environment

해당 유닛에서 사용할 환경 변수를 선언한다.

또한 반드시 "Exec*="  옵션보다 상단에 위치해야 한다.

예제는 아래와 같다.

 

 예제 1)

Environment='ONE=one' 'TWO=two two'

 예제 2)

Environment="JAVA_HOME = /url/bin/java"

 

 

EnvironmentFile

해당 유닛에서 사용할 환경 변수 파일을 정의한다.

환경 변수 파일에서 "#" 와 ";" 로 시작되는 라인은 주석으로 처리된다.

"Environment=" 와 같이 사용하는 경우 "Environment=" 옵션값이 먹게 된다.

또한 반드시 "Exec*=" 옵션보다 상단에 위치해야 한다.

 

 

ExecStart

시작 명령을 정의한다.

실행 명령어는 반드시 절대 경로 또는 변수(${STRINGS}와 같이)로 시작해야 하며, 다중 명령어를 지원한다.

 

 예제 1)

ExecStart="commnad1"
ExecStart="command2"
ExecStart="command3"

 예제 2)

ExecStart="command1; command2; command3"

 

 

ExecStop

중지 명령을 정의한다.

사용법은 "ExecStart="와 동일하다.

중지 방식은 "KillMode=" 로 지정된다.

 

* KillMode=[ control-group|process | none ]

 

중지 방법에 대해서 선언한다.

 

control-group (기본값) 해당 유닛의 그룹에 포함된 모든 프로세스를 중지 시킨다.
process 메인 프로세스만 중지 시킨다.
none 아무런 행동도 하지 않는다.

 

여기에서 그룹은 어떤 유닛과 그에 종속성을 가지는 다른 유닛들을 말한다.

 

 

RestartSec

재시작 명령을 수행할 때, 중지 후 다시 시작하기까지 대기(sleep)하는 시간을 설정한다.

기본값은 "100ms" 이다.

각각 "min", "s", "ms" 단위로 설정한다.

해당 설정은 Restart= 옵션이 있는 경우에만 적용된다.

 

 

User, Group

유닛의 프로세스를 수행할 사용자/그룹의 이름을 지정한다.

 

 예제)

User=root
Group=root

 

 

 

 

 

[ Install ]

Alias

유닛의 별칭을 지정한다.

"systemctl enable" 명령어를 통해서 별칭을 생성할 수 있다.

별칭은 유닛 파일 확장자(유닛 타입)를 가지고 있어야 한다.

(service, socket, mount, swap 등이 있다. 예: httpd.service 의 Alias=apache.service)

 

WantedBy, RequiredBy

"systemctl enable" 로 유닛을 등록할 때 등록에 필요한 유닛을 지정한다.

해당 유닛을 등록하기 위한 종속성 검사 단계로 볼 수 있다.

따라서 해당 설정은 [Unit] 섹션의 "Wants=" 와 "Requires=" 옵션과 관계 있다.

 

Also

"systemctl enable"과 "systemctl disable"로 유닛을 등록하거나 해제할 때, 여기에 지정된 다른 유닛도 같이 등록, 해제하도록 할 수 있다.

 

 

 

 

이 외에도 여러 설정에 대한 내용은 여기를 참고하면 된다.

 

systemctl - PGWiki

systemctl은 systemd의 LGPL 라이센스를 따르는 사용자 명령행 무른모로서, 기존의 SysVinit이나 upstart를 대체하는 시스템 자원 통합 관리 도구다. 엄밀히 말해서, 이 도구는 리눅스의 기본 모토를 많이 �

potatogim.net

 

 

 

 

실제 리눅스에 톰캣 서비스 등록하는 방법을 살펴보자

 

[Linux] CentOS 7 에서 Tomcat 서비스 등록하기

[Linux] CentOS 7 에서 Tomcat 서비스 등록하기 서비스란, 윈도우에서도 볼 수 있는데, 현재 구동중인 서비스 목록 확인 및 서비스 관리(수동 시작, 중지 등)를 할 수 있다. 리눅스에서도 서버가 실행되�

haenny.tistory.com

 

 

 

728x90
반응형

댓글

추천 글