본문 바로가기

잡다구리/서버

[Linux] systemd 와 service의 차이점

systemd와 service의 관계에 대해 알아보자

  systemd ? 

  • 데몬을 실행하고 관리하게 해주는게 systemd입니다
  • 이전에는 init이라는 데몬이 있었는데 이를 대체하고 init보다 기능이 추가되어서 나온 것이 systemd
  • PID 1은 주로 시스템을 시작하고 종료하는데 사용되는 init 프로세스(init process)
ubuntu@ip-10-0-0-238:~$ top
      1 root      20   0  168732  12612   8132 S   0.0   0.2   0:26.05 systemd                                                                                                                                     
  73668 ubuntu    20   0 2235736 756644  23356 S   0.3   9.3  12:02.92 java

 

top 로 현재 실행중인 프로세스를 확인하면 제일 위에 1번 PID = system 입니다.

예전의 PID 1이었던 init은 현재로부터 수 십 년 전에 처음 소개된 프로그램인데 그 때의 구조를 거의 바꾸지 않고 계속 기능이 추가되며 날이 갈수록 복잡해지는 프로그램들로 인해 효율이 떨어졌다.

init은 시작할 프로그램을 구동하는 쉘 스크립트를 특정 run-level의 rc 디렉토리에 추가하는 방식의 구조를 가졌다. init은 부팅 과정에서 단계적으로 run-level을 올려가며 해당 run-level에 포함된 스크립트들을 순차적으로 실행시키니 설정이 복잡하고, 속도가 순차의 depth가 깊을수록 느려졌다.

이런 문제들을 해결하기 위해 Red Hat의 개발자들이 systemd를 만들기 시작했다.
systemd는 당연하지만 init보다 좋은 성능과 직관적인 설정을 가졌다.

의존성을 해치지 않으며 가능한 한 "병렬"로 시작 프로그램들을 실행시키는 것으로 부팅 속도를 끌어올리고, 프로그램 실행을 위한 파일로는 쉘 스크립트가 아니라 .service라는 systemd만의 unit을 통해 체계적이면서 가독성이 좋게 설정이 가능해졌다. 병렬로 서비스를 수행하기 때문에 서비스간의 종속성 및 실행 순서 관리가 매우 중요하다.

게다가 systemd는 단지 init 뿐만 아니라 다른 프로그램들의 기능들마저 가져와 추가하기 시작했다.

컴퓨터의 네임서버 주소를 설정하는 resolvconf의 자리를 systemd-resolved가 DHCP 서버에서 IP를 받아와서 네트위크 인터페이스에 설정하는 dhcpcd의 자리를 systemd-networkd가 대체할 수 있게 기능을 추가 했다.

이외에도 시스템 내부의 udev가 systemd에 포함되는 등 여러 방면에서 systemd의 존재가 강력해지고 있다.


✅  service ?

  • 서비스는 데몬을 조작하기 위한 명령어이다. 
  • /etc/init.d 디렉토리에 있는 링크파일들 대상으로 start, stop, restart, reload, status 를 할 수 있다.
  • 위와 같이 systemd 가 등장하면서 systemctl 명령어를 사용할 수 있게 되었기 때문에 더욱 더 편리해졌다.
  • OS 특정 버전 부터는 (리눅스 기반인 OS) service를 수행해도 redirecting to /bin/systemctl start ***.service 라고 리다이렉팅 되어 systemctl로 실행이 되고 있다.
  • 사실 이제 service와 init은 잊고, systemctl 을 기억하는게 옳은 접근 방법 인 것이다.

'잡다구리 > 서버' 카테고리의 다른 글

[서버] CPU와 메모리 (1)  (0) 2022.02.14
[Linux] 리눅스 커널이란?  (1) 2022.02.07
[Linux] 환경변수 설정  (0) 2021.06.15
[Linux] Apache 소스설치  (0) 2021.06.14
[Linux] Tomcat / Apache / MariaDB 3Tier 분리  (0) 2021.04.13