개요
systemd(system daemon)란 시스템을 부팅한 뒤 가장 먼저 생성되어 System and Service Manager로서 시스템의 부팅 및 서비스를 관리해주는 데몬이다. RHEL7부터 기존에 사용되던 init을 대체하였으며, 용도에 따라 다양한 유형의 유닛으로 시스템을 관리한다. PID는 1, 부모 프로세스가 없으므로 PPID도 1이다.
- 데몬(daemon) : 백그라운드에서 동작하는 시스템으로 터미널이나 사용자가 없어도 움직인다.
systemd 주요 디렉토리
경로 | 설명 |
/etc/systemd/system | 유닛의 환경 설정 파일이 위치하는 디렉토리. 시스템 관리자가 생성, 관리하는 유닛들이 저장된다. |
/run/systemd/system | 런타임(Runtime) 상태일 때 임시로 유닛 파일을 저장하는 디렉토리. 재부팅시 삭제된다. |
/usr/lib/systemd/system | 시스템에서 사용되는 service, target, socket 유닛 파일이 위치하는 디렉토리 |
1. systemd의 구조
1.1. 유닛(unit)
systemd는 리소스를 다양한 유형의 유닛(unit)들로 나눠서 관리한다.
사용 가능한 유닛의 종류로는 service, socket, target, device, mount, automount, swap, timer, path, slice, scope가 있다.
주요 유닛
유형 | 설명 |
service | 관련 파일명이 “.service”로 끝나며 서버에서 제공하는 서비스가 해당한다. 보통 데몬(deamon)이라 부른다. |
target | 관련 파일명이 “.target”으로 끝나며 부팅 레벨 , 특정 동기화 지점과 같이 유닛을 그룹화할 때 사용한다. |
socket | 관련 파일명이 “.socket”으로 끝나며 프로세스 간 통신에 사용되는 IPC 소켓을 만든다. |
path | 관련 파일명이 ‘.path’ 로 끝나며며 특정파일 시스템이 변경될때까지 서비스의 활성화를 지연 시킬때 사용된다. 프린팅 시스템의 스풀 디렉터리를 사용하는 서비스에 사용된다. |
1.2. 서비스(service)
부팅과 동시에 실행이 되며 “.service”로 끝난다. systemctl으로 제어가 가능하다.
서비스 상태에 대한 주요 값
상태값 | 설명 |
loaded | 프로세스 로드되는 유닛의 환경 설정 파일로 나타낸다. |
enabled | 부팅 시에 활성화 상태 |
disabled | 부팅 시에 비활성화 상태 |
active(running) | 프로세스가 하나 또는 그 이상의 프로세스에 의해 동작 중인 상태 |
active(exited) | 일회성 프로세스를 성공적으로 실행한 상태 |
active(waiting) | 동작 중인 상태이나 특정 이벤트에 의해 대기 중인 상태 |
inactive(dead) | 프로세스가 종료된 상태 |
static | 활성화가 되지는 않지만, 활성화되는 다른 유닛에 의해 활성화가 가능한 상태 |
1.3. 타깃(target)
타깃은 부팅 레벨, 특정 동기화 지점과 같이 유닛을 그룹화 할때 사용한다.
주요 target
Target | 설명 |
poweroff.target | 시스템을 종료시키는 타깃 |
rescue.target | 응급복구 모드(init runlevel 1)로 전환하는 타깃 |
emergency.target | rescue.target과 유사하고, /를 읽기 전용(read only)로 마운트 한다. |
multi-user.target | 콘솔 모드 (init 체제의 runlevel 3)로 전환하는 타깃으로 텍스트 기반 로그인만 지원한다. |
graphical.target | X Window(init체제의 runlevel 5)모드로 전환하는 타깃으로 텍스트 기반 로그인 이외에 X기반의 로그인을 지원한다. |
reboot.target | 재부팅시키는 타깃이다. |
1.4. 런 레벨(run level)
시스템 관리를 위해 서비스 실행에 관련된 명령을 단계별로 구분하여 적용하는 것을 의미한다.
systemd(systemctl) 가 도입되고 나서 run level 은 target 이라는 용어로 변경되었고 target 을 설정하고 반영하는 명령어도 변경되었다.
런레벨
레벨 | 설명 | 특징 |
0 | Hlat | 시스템 중지, 기본값으로 설정 불가 |
1 | Single user mode | 단일 사용자 모드 바로 root 계정으로 접속한다. 시스템 관리 및 복구 목적으로 하는 모드로 네트워크, 파일 공유 같은 서비스가 제공되지 않는다 |
2 | Multiuser, without NFS | 네트워크를 사용하지 않는 다중 사용자 모드 런레벨 3에서 네트워크를 사용하지 않는 모드 |
3 | Full multiuser mode | 다중 사용자 모드 |
4 | Unused | 사용자가 정의해서 사용 가능한 모드 |
5 | X11 | X윈도우를 사용하는 다중 사용자 모드 |
6 | Reboot | 시스템 재부팅, 기본값으로 설정 불가 |
1.5. 소켓(socket)
소켓은 클라이언트 프로그램과 서버 프로그램 간의 연결을 설정하여 구조화된 방식으로 데이터를 송수신할 수 있도록 하는 데 사용된다.