본문 바로가기
OS/Linux

[Linux] CentOS - Systemd 개요

by BTC_프로틴 2022. 5. 24.

Systemd란?

  • 리눅스를 부팅하면 커널이 가장 먼저 실행시키는 프로세스
  • 기존의 리눅스는 가장 먼저 init 프로세스를 실행하고 init 프로세스가 필요한 다른 프로세스를 실행
  • 기존의 init 프로세스는 단계적으로 런 레벨을 올려가며 해당 런 레벨의 rc 스크립트를 차례대로 실행
  • 하지만 init은 아주 오래전 리눅스에서부터 사용하던 프로세스였고 이에 계속해서 기능이 추가되면서 프로그램들이 복잡해지다보니 효율 또한 감소
  • 이에 systemd는 init의 단점을 보완하며 기존 리눅스의 의존성을 해치지 않도록 개발
  • systemd는 가능한 한 병렬로 시작 프로그램들을 실행시키는 것으로 부팅 속도를 끌어올리고, 프로그램 실행을 위한 파일로는 쉘 스크립트가 아니라 service라는 systemd만의 unit을 통해 체계적이면서 가독성이 좋도록 개발
  • systemd는 단지 init 뿐만아니라 다른 프로그램들의 기능마저 대체
  • 네임서버 주소를 설정하는 resolv.conf의 자리를 systemd-resolved가 대체, DHCP 서버에서 IP를 받아와서 네트워크 인터페이스에 설정하는 dhcpcd의 자리를 systemd-networkd가 대체
  • systemd는 1번의 PID를 가지고 실행됨
[root@localhost boot]# ps -ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:04 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 13:04 ?        00:00:00 [kthreadd]
root         4     2  0 13:04 ?        00:00:00 [kworker/0:0H]
root         5     2  0 13:04 ?        00:00:00 [kworker/u2:0]
root         6     2  0 13:04 ?        00:00:00 [ksoftirqd/0]
root         7     2  0 13:04 ?        00:00:00 [migration/0]
root         8     2  0 13:04 ?        00:00:00 [rcu_bh]

 

/etc/systemd
: systemd의 설정파일 디렉토리
[root@localhost system]# ls /etc/systemd
bootchart.conf  journald.conf  system       user
coredump.conf   logind.conf    system.conf  user.conf

 

Systemd unit

  • systemd는 전체 시스템을 시작하고 관리하는데 유닛(Unit)이라 부르는 구성 요소를 사용
  • systemd는 관리 대상의 이름을 '서비스 이름.유닛 종류'의 형태로 관리
  • 유닛은 같은 이름과 종류로 구성된 설정 파일과 동일한 이름을 사용
  • 유닛의 종류
    • service : 데몬의 시작, 종료, 재시작 담당 ex) atd.service
    • socket : 소켓을 관리하는 유닛 ex) dbus.socket
    • device : 리눅스의 여러 장치들을 관리 ex) dev-sda.device
    • mount : 마운트 포인트 관리 ex) boot.mount
    • automount : 자동 마운트 포인트 관리 ex) proc-sys-fs-binfmt_misc.automount

 

Systemd command

systemd  [옵션] [명령] [유닛 이름]
  • 옵션
    •  a : 상태와 관계없이 유닛 전체를 출력
    •  t [유닛의 종류] : 지정한 종류의 유닛만 출력
  • 명령
    • start : 유닛을 시작
    • stop : 유닛을 정지
    • reload : 유닛의 설정 파일을 다시 읽음
    • restrat : 유닛을 재시작
    • status : 유닛의 현재 상태를 확인
    • enable : 부팅 시 유닛이 자동으로 시작되도록 설정
    • disable : 부팅 시 유닛이 자동으로 시작되지 않도록 설정

 

참고 : 

https://www.youtube.com/channel/UCl9zTDOvOxdCfUt1HqVwwdg

댓글