Profile picture

[Linux] systemd - service / systemctl

JaehyoJJAng2023년 03월 21일

systemd

systemd는 부팅부터 서비스 관리, 로그 관리 등의 시스템 전반적인 영역에 걸쳐있는 중요한 프로세스이다.


리눅스는 OS이기 때문에 서버 전원을 'On' 시킬 경우, 부팅이 되는 과정에서 시스템을 초기화하고, 환경 설정을 누군가 해줘야한다.

systemd 이전에는 init 프로세스가 PID 1를 차지하여 그 역할을 대신 해주었는데, init 프로세스의 한계를 극복하기 위해 systemd가 등장하면서 호환성도 제공하고 기존 init 프로세스와는 다르게 병렬로 실행되어 부팅 속도가 개선되는 등 다양한 기능을 제공하고 있다.

시스템 운영 시 많이 쓰게되는 systemctl 명령어도 systemd를 사용한다. 즉, service라는 이름으로 띄울 수 있는 systemd라는 init system과 이를 관리하기 위한 도구인 systemctl이 있는 것이다.


systemctl

RHEL 7에 도입된 서비스를 제어하는 명령어.
systemd service가 등록되어 있지 않아도 service를 실행하면 자동으로 systemctl에 등록된다.
(/run/systemd)

또한 /usr/lib/systemd/system 하위에 확장자가 .service인 파일을 만들면 systemctl 명령을 통해 서비스를 제어할 수 있다.
(/usr/lib/systemd/system/<서비스이름>.service)

참고로 CentOS 7 버전 이전에는 기존 서비스 관리 명령어였던 chkconfig를 통해 /etc/init.d/*에 등록된 서비스들을 제어했었다.
CentOS 7 버전 이후에서는 systemctl를 통해 서비스를 관리한다.


명령의 종류

명령어 설명
systemctl start <서비스> 서비스 시작
systemctl stop <서비스> 서비스 중지
systemctl status <서비스> 서비스 상태 확인
systemctl restart <서비스> 서비스 재시작 (중지 -> 시작)
systemctl reload <서비스> 서비스를 중지하지 않고 설정 값을 반영 (서비스가 중지되면 안되는 경우 사용)
systemctl enable <서비스> 시스템이 재부팅하면 자동으로 서비스 실행되도록 등록
systemctl disable <서비스> enable한 서비스 해제
systemctl list-units --type service [--all] [모든] 서비스 목록 보기
systemctl list-unit-files --type service 모든 서비스의 현재 활성화 상태 보기
systemctl list-unit-files --type service --state=enabled enabled 라고 표시된 모든 활성화 서비스 보기
systemctl daemon-reload 설정들을 데몬에 즉시 반영함
systemctl kill [서비스명] 서비스와 관련된 프로세스까지 모두 종료 시킴
systemctl reset-failed 서비스를 disable 했는데도 계속 보이면 리셋 시키도록 함

service 명령어와 비교

service systemctl 설명
service name start systemctl start name.service 서비스 시작
service name stop systemctl stop name.service 서비스 중지
service name restart systemctl restart name.service 서비스 재시작
service name condrestart systemctl try-restart name.service 서비스가 구동중이었을 경우에만 재시작
service name reload systemctl reload name.service 설정 재구동
service name status systemctl status name.service
systemctl is-active name.service
서비스 구동 여부 확인
service --status-all systemctl list-units --type service --all 모든 서비스의 상태 표시

Loading script...