반응형
systemd 소개
- systemd의 개요
- 정의
- systemd는 이전 버전의 리눅스에서 사용하였던 SysV init 시스템을 대체하기 위한 시스템 및 서비스를 위한 매니저 역할을 수행한다.
- 레드햇사의 Lennart Poettering과 Kay Sievers가 처음 개발하였고, LGPL 라이선스이다.
- 특징
- 기존의 SysV init 스크립트와 호환성을 유지하도록 설계되었다.
- 부팅 시 시스템의 서비스들의 병렬로 시작할 수 있는 기능을 제공
- 데몬이 필요한 순간 실행하여 시스템 리소스를 절약할 있는 온디맨드 액티베이션(ondemand activation) 기능을 제공한다. 구체적으로 D-Bus, 소켓, 장치, 경로 기반 온디맨드 액티베이션 기능을 제공한다.
- 서비스 간 의존성을 고려하여 서비스의 시작 순서를 제어할 수 있는 기능을 제공한다.
- 시스템 서비스, 소켓상 패킷의 수신 대기, 실행 레벨(run level) 등의 시스템 및 서비스와 관련된 정보를 '유닛(systemd units)'이라는 단위로 추상화하여 관리한다.
- 정의
- systemd의 구조
- 유닛(systemd units)
- systemd는 시스템을 관리하기 위해 Service, Target, Automount, Device, Mount, Path, Scope, Slice, Snapshot, Socket, Swap, Timer 등 다양한 유닛을 제공하며 그 중 대표적인 유닛은 다음과 같다.
-
유닛 유형 확장자 설명 Service unit .service 시스템상에서 동작하는 서비스 또는 데몬과 연관된 유닛 Target unit .target 다수의 유닛을 하나의 그룹을 관리할 수 있는 유닛. 대표적인 예로 SysV Init에 존재했던 실행 레벨(run level)을 Target 유닛으로 관리할 수 있다. Device unit .device 커널이 인식 가능한 장치와 연관된 유닛. 가령 특정 USB 장치가 연결될 때 특성 서비스 유닛을 실행할 수 있다. Mount unit .mount 파일 시스템의 마운트 포인트를 나타내는 유닛 Path unit .path 파일 시스템의 파일과 디렉터리와 연관된 유닛 Socket unit .socket 프로세스 간 통신을 의미하는 IPC(inter-process communication)를 위해 사용하는 소켓과 연관된 유닛 Timer unit .timer systemd 타이머와 연관된 유닛
- 유닛을 위한 파일 경로
- 각 경로에 동일한 유닛이 발견된다면 표상 아래에 위치한 경로의 유닛이 우선하게 된다.
-
경로 설명 /usr/lib/systemd/system/ RPM 패키지로 배포되어 설치된 유닛은 이 경로에 존재한다. /run/systemd/system/ 실행 시 생성된 유닛 파일이 위치하는 곳이며 /usr/lib/systemd/system/ 경로보다 이 경로에 위치한 유닛이 우선한다. /etc/systemd/system/ systemctl enable 명령을 통해 생성된 유닛이 위치하는 경로이며 /run/systemd/system/ 경로보다 이 경로에 위치한 유닛이 우선한다.
- 유닛 파일의 구조
- 유닛 파일은 [Unit], [Unit type], [Install]와 같이 3개의 섹션으로 구성된다.
-
섹션 설명 [Unit] 유닛 공통의 일반적인 사항을 포함하고 있다. Description은 유닛에 대한 설명이고 Documentation은 유닛의 설명이 있는 웹 경로를 지정한다. Alter는 유닛이 시작할 순서를 정의하고 Requires는 유닛의 의존 관계를 지정한다. Wants는 Requires보다는 약한 의존성을 지정할 수 있다. [Unit type] 유닛 유형의 특성을 기술한다. 예를 들어 Service 유닛은 [Service]라는 섹션 이름을 갖는다. [Service] 섹션의 ExecStart는 유닛이 실행할 때 실행할 명령어나 스크립트를 지정한다. ExecStop은 유닛이 중지할 때 실행할 명령어나 스크립트를 지정한다. [Install] systemctl enable 또는 disable 명령어로 유닛을 제어할 때 필요한 정보를 담고 있다. RequireBy는 해당 유닛에 의존하고 있는 유닛의 목록을 지정한다. WantedBy는 유닛에 약한 의존관계를 갖고 있는 목록을 지정한다.
- 유닛(systemd units)
- systemd의 주요 명령어
- 서비스 관리
- 서비스 시작: systemctl start name.service
- 서비스 중지: systemctl stop name.service
- 서비스 재시작: systemctl restart name.service
- 서비스 실행 중인 경우만 재시작: systemctl try-restart name.service
- 서비스 설정 갱신: systemctl reload name.service
- 서비스 상태 확인: systemctl status name.service
- 서비스 목록 확인: systemctl list-units-type service --all
- 타깃 유닛
- 기본 타깃 확인: systemctl get-default
- 현재 로드된 모든 타깃: systemctl list-units-type target
- 기본 타깃 변경: systemctl set-default name.target
- 현재 타깃 변경: systemctl isolate name.target
- 복구 모드 변경: systemctl rescue
- 응급 모드 변경: systemctl emergency
- 전원 관리
- 시스템 끄기: systemctl halt
- 시스템 전원 끄기: systemctl poweroff
- 시스템 재시작: systemctl reboot
- 시스템을 서스펜드하기: systemctl suspend
- 시스템을 하이버네이트하기: systemctl hibernate
- 시스템을 하이버네이트 및 서스펜드하기: systemctl hybrid-sleep
- 원격 제어
- 원격 시스템에 실행 중인 sshd 서비스에게 명령어를 전달하여 원격 시스템의 서비스를 제어할 수 있다. systemctl의 --host 또는 -H 옵션을 사용하여 원격지의 sshd 서비스에 연결할 수 있다.
- systemctl -H root@linuxserver.example.com status httpd.service
- 서비스 관리
반응형
'Linux > 리눅스 실무의 이해' 카테고리의 다른 글
02-03 X 윈도우 (0) | 2022.01.15 |
---|---|
02-02-03 파일 시스템의 이해 (0) | 2022.01.14 |
02-02-01 리눅스의 구조 (0) | 2022.01.11 |
02-01 리눅스와 하드웨어 (0) | 2022.01.11 |
01-02 리눅스의 기초 (1) | 2022.01.02 |