[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"로 유닛을 등록하거나 해제할 때, 여기에 지정된 다른 유닛도 같이 등록, 해제하도록 할 수 있다.
이 외에도 여러 설정에 대한 내용은 여기를 참고하면 된다.
실제 리눅스에 톰캣 서비스 등록하는 방법을 살펴보자
'운영체제' 카테고리의 다른 글
[Tomcat] MacOS에 Apache Tomcat 다운로드 받기 (0) | 2020.08.24 |
---|---|
[Linux] CentOS 7 자주쓰는 Tomcat 사용 명령어 (0) | 2020.07.14 |
[Linux] CentOS 7 에서 Tomcat 서비스 등록하기 (0) | 2020.07.13 |
[Windows10] 특정 경로에 있는 파일 정보 엑셀에 가져오기 (0) | 2020.07.06 |
[CMD] 명령프롬포트의 dir 명령어 알아보기 (0) | 2020.05.08 |
댓글