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 : 부팅 시 유닛이 자동으로 시작되지 않도록 설정
참고 :
'OS > Linux' 카테고리의 다른 글
알아보자! 프로세스 정보들을! top을 이용해서. (0) | 2022.05.25 |
---|---|
리눅스 명령어로 서버 상태 파악하기 (0) | 2022.05.25 |
[OS]리눅스 배포판 종류와 특징 (1) | 2022.05.23 |
mod_jk와mod_proxy의 차이점 (0) | 2022.05.22 |
[Linux] CentOS - 런 레벨 (0) | 2022.05.17 |
댓글