리눅스 책 정리(7)

eunyeong·2023년 2월 20일
0

Linux_book

목록 보기
7/8

7단원 Systemd

[학습 목표]

  • init 프로세스를 최신 리눅스에서 사용하지 않게 됨에 따라 systemd 데몬 프로세스로 대체하게 됨. 이의 개념과 특징에 대해 이해하기
  • systemd에서는 런 레벨 대신 타겟 유닛을 사용하여 운영 상태를 나타냄. 이 유닛의 종류와 기능에 대해 이해하기
  • systemctl 명령을 통해 유닛을 관리하는 법을 알기

7.1 systemd 소개

7.1.1 systemd 소개

  • 최신 리눅스에서 새롭게 도입된 시스템 관리 데몬
  • PID 1번을 사용하며 시스템 부팅 시 최초로 실행되는 프로세스
  • system + demon 의 약자
  • 시스템 관리, 로그 관리, 서비스 관리, 초기화 스크립트 관리 등 시스템의 모든 부분에 관여

7.1.2 systemd 기능 및 특징

1) init 프로세스에 대한 호환성 제공

  • 이전 init 프로세스의 스크립트를 서비스 유닛으로 제공
  • 런 레벨을 사용하지 않고 타겟 유닛을 사용

2) systemd 유닛 사용

  • 서비스 유닛, 타겟 유닛, 자동마운트 유닛, 마운트 유닛 등

3) 시스템 부팅 시 서비스 병렬 시작

  • 각 서비스마다 소켓이 대기하다가 메시지를 받게 되면 의존성에 따라 특정 서비스가 실행될 때 함께 실행되도록 함

4) 사용자 요구에 맞게(On-demand) 서비스 실행

5) 시스템 상태 스냅샷 지원

6) 의존성 기반의 서비스 제어 로직 제공

7) Upstart 대체

8) CGroup관리

  • 비슷한 프로세스를 그룹화하여 제어하는 기능

9) systemctl을 사용한 사용자 정의 명령 미지원

10) systemd에 의해 실행된 서비스만 관리

11) 시스템 셧다운 시 실행중인 서비스만 중지

  • 셧다운 속도가 빨라짐

12) 서비스에 대해서 5분의 timeout 적용

  • 모든 서비스는 시스템이 프리징 상태가 되는 것을 막기 위해 기본 5분의 타임아웃이 적용됨

13) 소켓 기반 활성화

14) 버스 기반 활성화

  • 버스 서비스 파일을 사용하여 프로세스 간 통신을 쉽게 함

15) 장치 기반 활성화

16) 경로 기반 활성화

17) 마운트 포인트와 자동마운트 포인트 관리

18) 통합 로그 관리

7.2 systemd 유닛

7.2.1 systemd 유닛 파일 위치

1) /etc/systemd/system - 관리자가 수동으로 생성 및 관리하는 유닛

2) /run/systemd/system - 임시로 유닛파일을 저장하는 디렉토리

3) /usr/lib/systemd/system - 특정 유닛이 포함된 패키지를 설치하면 저장

7.2.2 systemd 유닛 파일의 구성

1) [Unit] 섹션

  • 유닛 자체의 일반적인 정보를 담고 있음

2) [유닛의 유형]

  • 서비스일 경우 [Service], 소켓일 경우 [Socket] 등

3) [Install] 섹션

  • systemctl enable UNIT 입력하면 옵션에 따라 링크 파일이 생성되고, 시스템 부팅 시 해당 유닛 파일을 실행
  • systemctl disable UNIT 입력하면 링크 파일이 삭제되고, 시스템 부팅 시 해당 유닛을 실행하지 않음

7.2.3 systemd 유닛의 종류

1) 서비스 유닛

2) 장치 유닛

3) 마운트 유닛

4) 자동마운트 유닛

5) 스왑 유닛

6) 타겟 유닛

7) 경로 유닛

8) 타이머 유닛

9) 스냅샷 유닛

10) 소켓 유닛

11) 범위 유닛

12) 슬라이스 유닛

  • 프로세스 그룹의 자원을 계층적으로 관리하기 위한 개념

7.3 systemctl 사용

7.3.1 시스템에서 존재하는 다수의 systemd 유닛 확인

1) 유닛의 실행(active) 상태 확인

2) 유닛의 활성화(enabled) 상태 확인

3) 소켓 유닛을 기다리는 파일 목록 확인

7.3.2 유닛의 개별 상태 확인

1) 특정 유닛의 실행(active) 상태 확인

  • systemctl is-active [UNIT]

2) 특정 유닛의 활성화(enabled) 상태 확인

  • systemctl is-enabled [UNIT]

3) 특정 유닛의 의존성 확인

  • systemctl list-dependencies [UNIT]

4) 특정 유닛의 자세한 정보 확인

  • systemctl status [UNIT]

7.3.3 systemd 유닛 제어 명령

1) systemd 유닛 실행

  • systemctl start [UNIT]

2) systemd 유닛 중지

  • systemctl stop [UNIT]

3) systemd 유닛 활성화

  • systemctl enable [UNIT]

4) systemd 유닛 비활성화

  • systemctl disable [UNIT]

5) systemd 유닛 재시작

  • systemctl restart [UNIT]

6) systemd 유닛 다시읽기

  • systemctl reload [UNIT]

7) systemd 유닛 마스킹

  • systemctl mask [UNIT] (마스킹 후 실행 시 에러 메시지)

8) systemd 유낫 마스킹 해제

  • systemctl unmask [UNIT]
profile
아무것도 모르는 초보

0개의 댓글