본문으로 바로가기

0. Why?

0.1. systemctl(systemd)이란?

- RHEL 7에 도입된 systemd(system daemon)를 관리하는 명령어

- 서비스를 쉽고 편하게 제어할 수 있는 명령어(stop, status, start, auto start...)

- systemd(system daemon)은 전통적으로 Unix 시스템이 부팅 후에 가장 먼저 생성된 후에 다른 프로세스를 실행하는 init 역할을 대체하는 데몬입니다. 

0.2. 톰캣(Tomcat)을 왜 서비스에 등록하나요?

- 톰캣을 실행하려면 직접 경로에 접근해서 sh 파일을 실행해 주게 되는데 이러한 비효율 및 불편함을 해결해 줄 수 있습니다.

- 톰캣을 재부팅 시에도 자동으로 실행되도록 만들 수 있습니다. 

- 톰캣의 간략한 상태를 쉽게 확인할 수 있습니다.

0.3. 세팅 환경 

- 필자는 CentOS 7(centos-release-7-9.2009.0.el7.centos.x86_64) 환경에서 설정했습니다.

 


1. 서비스 등록하기

1.1 tomcat.service 파일 생성

/etc/systemd/system 또는 /usr/lib/systemd/system 경로에 vi(vim) 툴을 이용해 tomcat.service를 생성해줍니다.

- /usr/lib/systemd/ vs /etc/systemd/system/

  → 기본적으로 배포 저장소에서 다운로드한 패키지로 제공되는 파일은 /usr/lib/systemd/ 

  → 시스템 관리자(사용자)가 수정한 사항은 로 이동합니다 /etc/systemd/system/

# vi /etc/systemd/system/tomcat.service​

1.2 tomcat.service 내용 저장

- 아래의 내용을 사용자 경로에 맞게 잘 입력 후 저장해 줍니다.

  Environment=사용자의 톰캣 경로 

  ExecStart=사용자의 톰캣 경로/bin/startup.sh
  ExecStop=사용자의 톰캣 경로/bin/shutdown.sh

[UNIT]
Description=tomcat
After=syslog.target network.target

[Service]
Type=forking

Environment=/usr/local/lib/apache-tomcat-8.5.69
ExecStart=/usr/local/lib/apache-tomcat-8.5.69/bin/startup.sh
ExecStop=/usr/local/lib/apache-tomcat-8.5.69/bin/shutdown.sh

User=root
Group=root

[Install]
WantedBy=multi-user.target

 

 


2. 명령어 사용

2.1. 명령어 종류

- 아래 명령어처럼 systemctl 명령어를 이용해 사용할 수 있습니다.

서비스 실행
# systemctl start 서비스명

서비스 중지
# systemctl stop 서비스명

서비스 상태 확인
# systemctl status 서비스명

서버 재부팅시 서비스 자동 실행 등록
# systemctl enable 서비스명

서버 재부팅시 서비스 자동 실행 해제
# systemctl disable 서비스명

위의 서비스 설정을 바로 적용을 위한 명령어
# systemctl daemon-reload

서비스와 관련된 프로세스도 모두 죽임
# systemctl kill 서비스명

존재하는 전체 서비스 목록
# systemctl

서비스 목록 (부팅 시 자동 실행 활성화 여부만 표시) 
# systemctl list-unit-files 

부팅시 실행에 실패한 서비스목록
# systemctl --failed

서비스 활성화 여부
# systemctl is-enabled 서비스명

서비스 현재 동작 여부
# systemctl is-active 서비스명

서비스의 자세한 상태 (해당 서비스의 로그도 표시)
# systemctl status -l 서비스명

 

- 사용 예시

# systemctl start tomcat
# systemctl status tomcat
● tomcat.service
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since 일 2021-08-01 17:09:50 KST; 5s ago
... 

# systemctl stop tomcat
# systemctl status tomcat
● tomcat.service
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 일 2021-08-01 17:10:01 KST; 3s ago
...

# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

# systemctl disable tomcat
Removed symlink /etc/systemd/system/multi-user.target.wants/tomcat.service.

2.2. 로그 확인

- 서비스로 등록한 경우 journalctl를 이용해 서비스와 관련된 로그를 살펴볼 수 있습니다. 설정이 잘못됐거나, 서비스를 시작할 수 없을 때 journalctl 명령어로 원인을 파악할 수 있습니다.

journalctl -u 서비스이름

# journalctl -u tomcat