SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Systemd with RHEL 7
주식회사 오픈소스컨설팅
박 현 익
Systemd 소개Ⅰ
Ⅱ
Ⅲ
Systemd 특장점
Systemd 의 부팅
Ⅳ Systemd 유닛 파일의 구조
Ⅴ Systemd 주요 명령어
Systemd 소개I
4
- Internal Use Only -
Systemd 란?
Systemd 는 systemd가 곧 시스템이며, 리눅스를 위한 서비스 매니저입니다
Systemd 는 Sys V init 스크립트와 호환되도록 만들어 졌으며, 다수의 기능을 제공합니다
이전 버전의 리눅스에서 불리우던 Upstart를 그대로 대체합니다
시스템 Snapshot 또는 의존성 기반의 서비스 컨트롤 로직을 지원합니다
Systemd는 유닛이라는 단위로 시스템을 관리합니다
On-Demand 서비스 시작 방법으로 좀 더 나은 트랜젝션과 의존성 컨트롤이 가능합니다
Systemd 의 병렬처리로 인하여 시스템 부팅시간을 비약적으로 줄였습니다
5
- Internal Use Only -
Systemd 의 유닛
Systemd는 시스템을 유닛 단위로 관리하며 각 유닛은 이름만으로도 각 각의 특징을 알 수 있습니다
유닛 타입 파일 확장자 설명
Service unit .service 시스템 서비스
Target unit .target Systemd 유닛의 그룹
Automount unit .automount automount 포인트
Device unit .device 커널에 의해 생성된 디바이스
Mount unit .mount 마운트 포인트
Path unit .path 파일시스템에 존재하는 디렉토리나 파일
Scope unit .scope 외부에서 만들어진 프로세스
Slice unit .slice 시스템 프로세스를 매니지하는 유닛들이 계층적 구성된 그룹
Snapshot unit .snapshot systemd 매니저의 상태를 저장하는 스냅샷
Socket unit .socket 내부 프로세스통신 소켓
Swap unit .swap 스왑 디바이스나 스왑파일이
Timer unit .timer 시스템 타이머
Systemd 유닛의 위치 설명
/usr/lib/systemd/system RPM 설치시 배포되는 유닛의 위치
/run/systemd/system Runtime 시에 생성된 systemd 유닛. 이 디렉토리는 설치시에 배포된 디렉토리와 유
닛보다 우선순위가 높음
/etc/systemd/system 시스템 관리자가 생성되고 관리되는 디렉토리. 이 디렉토리는 Runtime 유닛 디렉토
리 보다 우선순위가 높음
6
- Internal Use Only -
Systemd 의 변경점 (이번 버전 대비)
Systemd 시스템과 서비스 매니저는 SysV init과 upstart에 호환 되도록 디자인 되어있습니다
Systemd는 몇가지의 target을 제공하며, 이 target 들은 호환성을 위해 그전에 불리우던 런레벨과
매핑됩니다. 하지만 모든 target이 runlevel과 매핑되지는 않습니다. 그러므로 되도록 runlevel 커맨드를
사용하지 않으시는 것이 좋습니다
systemctl 커맨드는 start, stop, status 와 같은 표준 커맨드는 SysV init 스크립트에 구현 가능지만 기타
다른 커스텀 커맨드는 지원하지 않습니다 (예시 : systemctl iptables panic)
systemctl 유틸리티는 systemd를 통해서 시작하지 않은 서비스와 커뮤니케이션 하지 않습니다. Systemd가
서비스를 시작시킬때, systemd는 해당 서비스를 tracking 하기 위해 메인 PID를 저장합니다. 결과적으로
systemctl 유틸리티는 서비스를 관리하고 서비스쪽으로 쿼리를 보내기 위해서 PID를 사용하게 됩니다.
따라서 유저가 별도의 데몬을 직접 시작하였다면, systemctl 커맨드를 사용할 수 없습니다
Systemd는 실행중인 서비스만 정지 시킬수 있습니다. 이전버전의 리눅스에서는 shutdown 시퀀스가
시작되었을때, 서비스 상태에 상관 없이 /etc/rc0.d/ 디렉토리에 있는 스크립트를 사용하여 사용 하여 정지가
가능했지만 Systemd는 오직 실행중인 데몬만 정지가 가능합니다
7
- Internal Use Only -
Systemd 의 변경점 (이번 버전 대비)
시스템 서비스는 standard input stream을 읽을 수 없습니다. 시스템이 서비스를 시작할때, 대화형 진행을
막고자 서비스의 스탠다드 input을 /dev/null로 연결합니다
시스템 서비스는 유저나 세션으로 부터 어떤 컨텍스트(Home 또는 환경변수) 도 상속받지 않습니다. 각 각의
서비스는 깨끗한 환경에서 실행됩니다.
Sys V Init을 로딩할때에 Systemd는 LSB (Linux Standard Base)로 인코딩 된 dependency 정보를 읽어
들입니다. 그리고 런타임 상태에서 해석합니다
서비스 유닛의 모든 작동은 시스템 프리징시에 잘못된 작동을 막기 위해서 기본적으로 5분의 timeout 을
가지고 있습니다. 이 값은 initscript에서 서비스를 위해서 하드코딩 된 것이며, 변경할 수 없습니다. 그러나
개인 설정파일은 서비스 별로 더 긴 timeout시간을 가질수 있도록 할 수 있습니다
Systemd 특장점II
9
- Internal Use Only -
Systemd 특장점
기능 설명
서비스 활성화
systemd 기반으로 옮겨지면서 서비스들은 런레벨에 맞춰서 항상 실행되거나 항상 정지되거나 하는 방법으로 활성화 되
지 않습니다. 서비스들은 이제 path / socket / bus / timer 등에 기반하여 활성화 되거나 또는 하드웨어 상태에 따라 활성
화 됩니다. 마찬가지로 systemd가 socket을 세팅할 수 있기 때문에 만약 어떤 프로세스와 커뮤니케이션을 하는 다른 프
로세스가 갑자기 사라질 경우, 그 자리에서 다시 시작할 수 있도록 소켓을 통해 메시지를 받을 수 있습니다. 그러므로 클
라이언트 입장에서는 다른 방해 없이 서비스를 이용하는 것처럼 느낄 수 있습니다
리소스 관리
각 각의 systemd unit는 항상 그들의 Cgroup에서 컨트롤 해준 일정량의 리소스를 사용할수 있도록 되어 있습니다. 예를
들면 관리자는 특정 서비스에게 일정량의 CPU 사용률을 사용하도록 설정할 수 있습니다. 다른 말로 하면 특정서비스가
추가로 더 많은 CPU와 리소스를 사용할 수 없도록 할 수도 있습니다. systemd 이전에는 nice 값으로 프로세스의 cpu 점
유율을 컨트롤 했었지만 systemd는 cgroup을 사용하여 더 정확한 CPU 와 RAM 및 다른 리소스까지도 사용을 제한 할
수 있습니다
Slice
slice라 불리는 기능은 시스템에 있는 다양한 리소스 타입을 나누고 user / service / virtual machine / unit 등에게 할당
할 수 있습니다. 또한 이 리소스들을 계산할수도 있습니다. 이 기능을 통하여 고객들의 리소스 사용량에 따라 요금을 부
여할 수도 있습니다
10
- Internal Use Only -
Systemd 특장점 (2)
기능 설명
로깅
RAM Disk가 마운트 되는 시점부터 시스템이 다운되는 시점까지의 모든 로그가 systemd의 저널에 저장됩니다. systemd
journal이 존재하기전인 부트 초기화 단계의 메시지는 저장되지 않습니다. 이 경우는 직접 콘솔 화면을 스크롤 해서
debug를 해야합니다. 이제는 모든 시스템 메시지가 하나의 스트림으로 들어오고 /run 디렉토리에 저장됩니다. 또한 메
시지는 rsyslog로 변경할 수 있습니다. (전통적인 로그 디렉토리인 /var/log 디렉토리로 보내거나 원격 로그서버로 보내
질 수 있습니다.) 또는 journalctl을 통해서 디스플레이 할 수도 있습니다
의존성
systemd는 부트순서에 따라서가 구동 되는 것이 아닌 각 각의 서비스에 명백한 의존성을 정의하여 실행되며, 이 것은 각
서비스가 의존성만 충족된다면 어떤 시점에서도 실행될 수 있음을 말합니다. 많은 서비스들은 같은 시간에 시작될 수 있
으며, 이것은 부트 프로세스를 더욱 빠르게 만듭니다. 마찬가지로 복잡한 의존성을 설정할 수도 있습니다. 그래서 서비
스 시작전에 정밀한 의존성(스토리지나 파일시스템 등)을 요구하도록 해야합니다
Cgroups
서비스들은 Cgroups에 의해서 식별됩니다. 이 말은 모든 서비스의 컴포넌트들이 관리된다는 말입니다. 예를 들면
System V init scripts의 프로세스는 스스로 자식 프로세스를 시작하거나 다른 프로세스들을 시작시킬 수 있습니다. 또
한 init scripts 프로세스의 부모 프로세스가 죽을때 자식 프로세스도 같이 죽는것이 올바른 로직이라고 볼 수 있습니다.
(init scripts의 그렇지 않는 경우를 설명하는 부분입니다) Cgroups 를 사용한다면 서비스의 모든 컴포넌트들이 시작되었
는지 정지상태인지에 대한 태그를 가지고 있습니다 (서비스에 관련된 모든 컴포넌트가 관리가 된다는 얘기 입니다)
Systemd 의 부팅III
12
- Internal Use Only -
Systemd Boot 의존성
init 과 같은 엄격하게 정해진 프로세스를 없지만 부트 프로세스를 위한 구조가 존재합니다
13
- Internal Use Only -
Systemd Boot Process
local-fs.target : /etc/fstab에 있는 파일시스템을
마운트합니다.
swap.target : Swap 영역을 활성화 합니다
①
14
- Internal Use Only -
Systemd Boot Process
sysinit.target : 시스템 initializing 서비스를 시작합니다
 파일시스템 마운트
 Logging 활성화
 kernel 옵션 세팅
 하드웨어 감지를 위한 udevd 시작
 파일시스템 복호화
 iSCSI / multipath / LVM monitoring / Raid
②
15
- Internal Use Only -
Systemd Boot Process
Basic.target : Basic 서비스를 시작합니다
 firewalld
 microcode
 SELinux 를 위한 서비스 시작
 Kernel 메시지를 위한 서비스 시작
 /usr/lib/systemd/system/basic.target.wants 에서
모듈을 로딩
③
16
- Internal Use Only -
Systemd Boot Process
multi-user.target : /etc/systemd/system/multi-
user.target.wants 에 있는 서비스를 시작합니다
 abrt-ccpp.service
 avahi-daemon.service
 hypervvssd.service
 mdmonitor.service
 rsyslog.service
 abrtd.service
 chronyd.service
 irqbalance.service
 ...
④
17
- Internal Use Only -
Systemd Boot Process
graphical.target : /lib/systemd/system/graphical.target
을 시작합니다
 gnome-display-manager 시작
⑤
18
- Internal Use Only -
Systemd Boot Process
시스템 관리자로 부터 변경될 수 있는 기본 시작 target
파일입니다. 어떤 파일에 링크가 되어 있는지에 따라
해당 target 으로 부팅됩니다
Systemd 유닛 파일의 구조Ⅳ
20
- Internal Use Only -
Systemd 유닛 파일의 구조
Unit 파일은 전통적으로 3가지 섹션으로 구성 되어있습니다.
지시자 설명
[Unit]
Unit의 type에 의존적이지 않는 일반적인 옵션을 포함합니다. 이 옵션은 Unit을 설명하고 Unit의 동작을 정의합니다. 그
리고 다른 유닛과의 Dependency를 설정합니다
[Unit type]
특정 유닛이 type-specific 지시자를 가지고 있다면 해당 옵션에 대한 항목을 참조하여 유닛파일을 작성하거나 파악해야
합니다
[Install] 인스톨 관련 정보를 담고 있습니다. systemctl enable과 systemctl disabled 에 의한 동작이 기술되어 있습니다
21
- Internal Use Only -
[Unit] 섹션
옵션 설명
Description
유닛에 대한 전반적인 설명을 기술합니다. 이 영역은 systemctl status 커맨드를 사용할때 표시됩니다
Documentation
유닛에 대한 문서를 참조할만한 URI 리스트를 기재하는 곳입니다
After
After에 정의된 유닛이 활성화 된 이후에 유닛이 활성화 되어야 합니다. Requires와는 다르게 After는 After에 명시된
유닛을 활성화 시키지는 않습니다. Before는 After와 반대되는 기능의 옵션입니다
Requires
Requires에 정의된 유닛 리스트에 의존성이 있음을 말합니다. Requires 리스트에 있는 유닛은 이 유닛과 같이 활성화
됩니다. 만약 Requires에 있는 유닛이 fail이 된다면, 이 유닛도 활성화 되지 못합니다
Wants
Rqueires 보다는 약한 의존성을 나타냅니다. Wants에 있는 유닛이 fail이 되더라도 이 유닛을 활성화 될 수 있습니다
Conflicts
Requires와 반대로 여기에 명시된 유닛이 활성화 되어 있다면 이 유닛을 활성화 될 수 없습니다
22
- Internal Use Only -
[Unit type] 섹션
옵션 설명
Type
유닛의 시작 타입을 지정합니다. 아래와 같은 타입들이 존재합니다
• simple - 기본적인 형태이며, ExecStart에 있는 것이 메인 프로세스입니다
• forking - 이미 시작된 ExecStart 프로세스에서 child 프로세스를 생성하고 그 child 프로세스가 서비스의 main 프로
세스가 됩니다. 프로세스가 시작되면 부모 프로세스는 사라집니다
• oneshot - simple과 유사합니다. 다음 유닛이 시작되기 전에 사라집니다
• dbus - simple과 유사합니다. 메인 프로세스가 D-Bus 라는 이름을 얻게 될 경우만 다음 유닛이 시작됩니다
• notify - simple과 유사합니다. sd_notify() 펑션을 이용해서 메시지가 전달된 이후에만 다음 유닛이 시작됩니다
• idle - simple과 유사합니다. 모든 job이 끝날때까지 실질적인 실행이 지연됩니다
ExecStart 유닛이 시작되고 난 후 실행될 스크립트 커맨드를 정의 하는 곳입니다
ExecStop 유닛이 정지되고 난 후 실행될 스크립트 커맨드를 정의 하는 곳입니다
Restart 이 옵션이 정의되면 해당 프로세스가 모두 종료된 후 서비스가 재시작됩니다
RemainAfterExit
True 로 설정하게 되면 프로세스가 종료된 후에도 서비스가 활성화 되어 있는 것으로 간주합니다. 기본값은 false 입니
다
23
- Internal Use Only -
[Install] 섹션
옵션 설명
Alias 이 유닛의 별명을 설정할 수 있으며, 각 별명은 space로 구분됩니다
RequiredBy
이 유닛에게 의존성이 있는 유닛 리스트 입니다. 이 유닛이 활성화 되면 RequiredBy 리스트에 있는 유닛들은
Require 를 얻습니다
WantedBy
이 유닛에게 Wants를 갖는 유닛 리스트 입니다. 이 유닛이 활성화 되면 WantedBy 리스트에 있는 유닛들은 Want
를 얻습니다
Also
Also 리스트에 있는 유닛은 이 유닛이 삭제되거나 설치될때 같이 삭제되거나 설치됩니다
DefaultInstance
유닛이 활성화 될 때 인스턴스화 될 유닛을 제합니다
Systemd 주요 명령어Ⅴ
25
- Internal Use Only -
[Unit] 섹션
커맨드 설명
systemctl status <서비스명> 서비스의 상태 체크
systemctl stop <서비스명> 서비스의 정지
systemctl start <서비스명> 서비스의 시작
systemct enable <서비스명> 부트시 서비스 시작 활성화
systemctl disable <서비스명> 부트시 서비스 시작 비활성화
systemctl list-dependencies <서비스명> 서비스의 디펜던시를 출력
systemctl list-units --type <타입> 특정 타입을 출력
systemctl list-unit-files 시스템에 있는 모든 유닛의 리스트와 상태를 출력
systemctl list-unit-files 시스템에 있는 모든 유닛의 리스트와 상태를 출력
systemd-cgtop 각 각의 서비스가 사용하는 리소스를 보는 커맨드
systemd-cgls 각 각의 서비스에 할당되어 있는 프로세스를 출력
journalctl -k 현재 부트에서 kernel 메시지를 출력
journalctl -f 지속적으로 로그를 출력
journalctl -u 특정 unit에 대한 메시지를 출력
26
- Internal Use Only -
요약
OPEN
SHARE
CONTRIBUTE
ADOPT
REUSE

Weitere ähnliche Inhalte

Was ist angesagt?

Android+init+process
Android+init+processAndroid+init+process
Android+init+process
Hong Jae Kwon
 

Was ist angesagt? (20)

Vyos clustering ipsec
Vyos clustering ipsecVyos clustering ipsec
Vyos clustering ipsec
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File System
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
 
semaphore & mutex.pdf
semaphore & mutex.pdfsemaphore & mutex.pdf
semaphore & mutex.pdf
 
ELF
ELFELF
ELF
 
Install and configure linux
Install and configure linuxInstall and configure linux
Install and configure linux
 
Linux Scripting
Linux Scripting Linux Scripting
Linux Scripting
 
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts) Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
 
Docker Networking: Control plane and Data plane
Docker Networking: Control plane and Data planeDocker Networking: Control plane and Data plane
Docker Networking: Control plane and Data plane
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Memory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform TeamMemory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform Team
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
 
Using strace
Using straceUsing strace
Using strace
 
Linux dma engine
Linux dma engineLinux dma engine
Linux dma engine
 
Android+init+process
Android+init+processAndroid+init+process
Android+init+process
 
Embedded Systems: Lecture 14: Introduction to GNU Toolchain (Binary Utilities)
Embedded Systems: Lecture 14: Introduction to GNU Toolchain (Binary Utilities)Embedded Systems: Lecture 14: Introduction to GNU Toolchain (Binary Utilities)
Embedded Systems: Lecture 14: Introduction to GNU Toolchain (Binary Utilities)
 
Power shell training
Power shell trainingPower shell training
Power shell training
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 

Andere mochten auch

오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
Etsuji Nakai
 

Andere mochten auch (20)

[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
Enterprise Linux 7 new feature_systemd_booting
Enterprise Linux 7 new feature_systemd_bootingEnterprise Linux 7 new feature_systemd_booting
Enterprise Linux 7 new feature_systemd_booting
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템
 
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 

Ähnlich wie [오픈소스컨설팅]systemd on RHEL7

[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
NAVER D2
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
sprdd
 
07 스레드스케줄링,우선순위,그리고선호도
07 스레드스케줄링,우선순위,그리고선호도07 스레드스케줄링,우선순위,그리고선호도
07 스레드스케줄링,우선순위,그리고선호도
ssuser3fb17c
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
sprdd
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
Tommy Lee
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
운용 최
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
익성 조
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2
xyzlee
 

Ähnlich wie [오픈소스컨설팅]systemd on RHEL7 (20)

Systemd
SystemdSystemd
Systemd
 
Systemd explained
Systemd explainedSystemd explained
Systemd explained
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
07 스레드스케줄링,우선순위,그리고선호도
07 스레드스케줄링,우선순위,그리고선호도07 스레드스케줄링,우선순위,그리고선호도
07 스레드스케줄링,우선순위,그리고선호도
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
 
Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
 
리액트 18 공유.pptx
리액트 18 공유.pptx리액트 18 공유.pptx
리액트 18 공유.pptx
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
 
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
 
uEnginebpm 개발자교육 8 액티비티필터를 이용한 시스템연계
uEnginebpm 개발자교육 8 액티비티필터를 이용한 시스템연계uEnginebpm 개발자교육 8 액티비티필터를 이용한 시스템연계
uEnginebpm 개발자교육 8 액티비티필터를 이용한 시스템연계
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
솔라리스 OS 로그 분석
솔라리스 OS 로그 분석솔라리스 OS 로그 분석
솔라리스 OS 로그 분석
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 

Mehr von Ji-Woong Choi

Mehr von Ji-Woong Choi (16)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 

[오픈소스컨설팅]systemd on RHEL7

  • 1. Systemd with RHEL 7 주식회사 오픈소스컨설팅 박 현 익
  • 2. Systemd 소개Ⅰ Ⅱ Ⅲ Systemd 특장점 Systemd 의 부팅 Ⅳ Systemd 유닛 파일의 구조 Ⅴ Systemd 주요 명령어
  • 4. 4 - Internal Use Only - Systemd 란? Systemd 는 systemd가 곧 시스템이며, 리눅스를 위한 서비스 매니저입니다 Systemd 는 Sys V init 스크립트와 호환되도록 만들어 졌으며, 다수의 기능을 제공합니다 이전 버전의 리눅스에서 불리우던 Upstart를 그대로 대체합니다 시스템 Snapshot 또는 의존성 기반의 서비스 컨트롤 로직을 지원합니다 Systemd는 유닛이라는 단위로 시스템을 관리합니다 On-Demand 서비스 시작 방법으로 좀 더 나은 트랜젝션과 의존성 컨트롤이 가능합니다 Systemd 의 병렬처리로 인하여 시스템 부팅시간을 비약적으로 줄였습니다
  • 5. 5 - Internal Use Only - Systemd 의 유닛 Systemd는 시스템을 유닛 단위로 관리하며 각 유닛은 이름만으로도 각 각의 특징을 알 수 있습니다 유닛 타입 파일 확장자 설명 Service unit .service 시스템 서비스 Target unit .target Systemd 유닛의 그룹 Automount unit .automount automount 포인트 Device unit .device 커널에 의해 생성된 디바이스 Mount unit .mount 마운트 포인트 Path unit .path 파일시스템에 존재하는 디렉토리나 파일 Scope unit .scope 외부에서 만들어진 프로세스 Slice unit .slice 시스템 프로세스를 매니지하는 유닛들이 계층적 구성된 그룹 Snapshot unit .snapshot systemd 매니저의 상태를 저장하는 스냅샷 Socket unit .socket 내부 프로세스통신 소켓 Swap unit .swap 스왑 디바이스나 스왑파일이 Timer unit .timer 시스템 타이머 Systemd 유닛의 위치 설명 /usr/lib/systemd/system RPM 설치시 배포되는 유닛의 위치 /run/systemd/system Runtime 시에 생성된 systemd 유닛. 이 디렉토리는 설치시에 배포된 디렉토리와 유 닛보다 우선순위가 높음 /etc/systemd/system 시스템 관리자가 생성되고 관리되는 디렉토리. 이 디렉토리는 Runtime 유닛 디렉토 리 보다 우선순위가 높음
  • 6. 6 - Internal Use Only - Systemd 의 변경점 (이번 버전 대비) Systemd 시스템과 서비스 매니저는 SysV init과 upstart에 호환 되도록 디자인 되어있습니다 Systemd는 몇가지의 target을 제공하며, 이 target 들은 호환성을 위해 그전에 불리우던 런레벨과 매핑됩니다. 하지만 모든 target이 runlevel과 매핑되지는 않습니다. 그러므로 되도록 runlevel 커맨드를 사용하지 않으시는 것이 좋습니다 systemctl 커맨드는 start, stop, status 와 같은 표준 커맨드는 SysV init 스크립트에 구현 가능지만 기타 다른 커스텀 커맨드는 지원하지 않습니다 (예시 : systemctl iptables panic) systemctl 유틸리티는 systemd를 통해서 시작하지 않은 서비스와 커뮤니케이션 하지 않습니다. Systemd가 서비스를 시작시킬때, systemd는 해당 서비스를 tracking 하기 위해 메인 PID를 저장합니다. 결과적으로 systemctl 유틸리티는 서비스를 관리하고 서비스쪽으로 쿼리를 보내기 위해서 PID를 사용하게 됩니다. 따라서 유저가 별도의 데몬을 직접 시작하였다면, systemctl 커맨드를 사용할 수 없습니다 Systemd는 실행중인 서비스만 정지 시킬수 있습니다. 이전버전의 리눅스에서는 shutdown 시퀀스가 시작되었을때, 서비스 상태에 상관 없이 /etc/rc0.d/ 디렉토리에 있는 스크립트를 사용하여 사용 하여 정지가 가능했지만 Systemd는 오직 실행중인 데몬만 정지가 가능합니다
  • 7. 7 - Internal Use Only - Systemd 의 변경점 (이번 버전 대비) 시스템 서비스는 standard input stream을 읽을 수 없습니다. 시스템이 서비스를 시작할때, 대화형 진행을 막고자 서비스의 스탠다드 input을 /dev/null로 연결합니다 시스템 서비스는 유저나 세션으로 부터 어떤 컨텍스트(Home 또는 환경변수) 도 상속받지 않습니다. 각 각의 서비스는 깨끗한 환경에서 실행됩니다. Sys V Init을 로딩할때에 Systemd는 LSB (Linux Standard Base)로 인코딩 된 dependency 정보를 읽어 들입니다. 그리고 런타임 상태에서 해석합니다 서비스 유닛의 모든 작동은 시스템 프리징시에 잘못된 작동을 막기 위해서 기본적으로 5분의 timeout 을 가지고 있습니다. 이 값은 initscript에서 서비스를 위해서 하드코딩 된 것이며, 변경할 수 없습니다. 그러나 개인 설정파일은 서비스 별로 더 긴 timeout시간을 가질수 있도록 할 수 있습니다
  • 9. 9 - Internal Use Only - Systemd 특장점 기능 설명 서비스 활성화 systemd 기반으로 옮겨지면서 서비스들은 런레벨에 맞춰서 항상 실행되거나 항상 정지되거나 하는 방법으로 활성화 되 지 않습니다. 서비스들은 이제 path / socket / bus / timer 등에 기반하여 활성화 되거나 또는 하드웨어 상태에 따라 활성 화 됩니다. 마찬가지로 systemd가 socket을 세팅할 수 있기 때문에 만약 어떤 프로세스와 커뮤니케이션을 하는 다른 프 로세스가 갑자기 사라질 경우, 그 자리에서 다시 시작할 수 있도록 소켓을 통해 메시지를 받을 수 있습니다. 그러므로 클 라이언트 입장에서는 다른 방해 없이 서비스를 이용하는 것처럼 느낄 수 있습니다 리소스 관리 각 각의 systemd unit는 항상 그들의 Cgroup에서 컨트롤 해준 일정량의 리소스를 사용할수 있도록 되어 있습니다. 예를 들면 관리자는 특정 서비스에게 일정량의 CPU 사용률을 사용하도록 설정할 수 있습니다. 다른 말로 하면 특정서비스가 추가로 더 많은 CPU와 리소스를 사용할 수 없도록 할 수도 있습니다. systemd 이전에는 nice 값으로 프로세스의 cpu 점 유율을 컨트롤 했었지만 systemd는 cgroup을 사용하여 더 정확한 CPU 와 RAM 및 다른 리소스까지도 사용을 제한 할 수 있습니다 Slice slice라 불리는 기능은 시스템에 있는 다양한 리소스 타입을 나누고 user / service / virtual machine / unit 등에게 할당 할 수 있습니다. 또한 이 리소스들을 계산할수도 있습니다. 이 기능을 통하여 고객들의 리소스 사용량에 따라 요금을 부 여할 수도 있습니다
  • 10. 10 - Internal Use Only - Systemd 특장점 (2) 기능 설명 로깅 RAM Disk가 마운트 되는 시점부터 시스템이 다운되는 시점까지의 모든 로그가 systemd의 저널에 저장됩니다. systemd journal이 존재하기전인 부트 초기화 단계의 메시지는 저장되지 않습니다. 이 경우는 직접 콘솔 화면을 스크롤 해서 debug를 해야합니다. 이제는 모든 시스템 메시지가 하나의 스트림으로 들어오고 /run 디렉토리에 저장됩니다. 또한 메 시지는 rsyslog로 변경할 수 있습니다. (전통적인 로그 디렉토리인 /var/log 디렉토리로 보내거나 원격 로그서버로 보내 질 수 있습니다.) 또는 journalctl을 통해서 디스플레이 할 수도 있습니다 의존성 systemd는 부트순서에 따라서가 구동 되는 것이 아닌 각 각의 서비스에 명백한 의존성을 정의하여 실행되며, 이 것은 각 서비스가 의존성만 충족된다면 어떤 시점에서도 실행될 수 있음을 말합니다. 많은 서비스들은 같은 시간에 시작될 수 있 으며, 이것은 부트 프로세스를 더욱 빠르게 만듭니다. 마찬가지로 복잡한 의존성을 설정할 수도 있습니다. 그래서 서비 스 시작전에 정밀한 의존성(스토리지나 파일시스템 등)을 요구하도록 해야합니다 Cgroups 서비스들은 Cgroups에 의해서 식별됩니다. 이 말은 모든 서비스의 컴포넌트들이 관리된다는 말입니다. 예를 들면 System V init scripts의 프로세스는 스스로 자식 프로세스를 시작하거나 다른 프로세스들을 시작시킬 수 있습니다. 또 한 init scripts 프로세스의 부모 프로세스가 죽을때 자식 프로세스도 같이 죽는것이 올바른 로직이라고 볼 수 있습니다. (init scripts의 그렇지 않는 경우를 설명하는 부분입니다) Cgroups 를 사용한다면 서비스의 모든 컴포넌트들이 시작되었 는지 정지상태인지에 대한 태그를 가지고 있습니다 (서비스에 관련된 모든 컴포넌트가 관리가 된다는 얘기 입니다)
  • 12. 12 - Internal Use Only - Systemd Boot 의존성 init 과 같은 엄격하게 정해진 프로세스를 없지만 부트 프로세스를 위한 구조가 존재합니다
  • 13. 13 - Internal Use Only - Systemd Boot Process local-fs.target : /etc/fstab에 있는 파일시스템을 마운트합니다. swap.target : Swap 영역을 활성화 합니다 ①
  • 14. 14 - Internal Use Only - Systemd Boot Process sysinit.target : 시스템 initializing 서비스를 시작합니다  파일시스템 마운트  Logging 활성화  kernel 옵션 세팅  하드웨어 감지를 위한 udevd 시작  파일시스템 복호화  iSCSI / multipath / LVM monitoring / Raid ②
  • 15. 15 - Internal Use Only - Systemd Boot Process Basic.target : Basic 서비스를 시작합니다  firewalld  microcode  SELinux 를 위한 서비스 시작  Kernel 메시지를 위한 서비스 시작  /usr/lib/systemd/system/basic.target.wants 에서 모듈을 로딩 ③
  • 16. 16 - Internal Use Only - Systemd Boot Process multi-user.target : /etc/systemd/system/multi- user.target.wants 에 있는 서비스를 시작합니다  abrt-ccpp.service  avahi-daemon.service  hypervvssd.service  mdmonitor.service  rsyslog.service  abrtd.service  chronyd.service  irqbalance.service  ... ④
  • 17. 17 - Internal Use Only - Systemd Boot Process graphical.target : /lib/systemd/system/graphical.target 을 시작합니다  gnome-display-manager 시작 ⑤
  • 18. 18 - Internal Use Only - Systemd Boot Process 시스템 관리자로 부터 변경될 수 있는 기본 시작 target 파일입니다. 어떤 파일에 링크가 되어 있는지에 따라 해당 target 으로 부팅됩니다
  • 20. 20 - Internal Use Only - Systemd 유닛 파일의 구조 Unit 파일은 전통적으로 3가지 섹션으로 구성 되어있습니다. 지시자 설명 [Unit] Unit의 type에 의존적이지 않는 일반적인 옵션을 포함합니다. 이 옵션은 Unit을 설명하고 Unit의 동작을 정의합니다. 그 리고 다른 유닛과의 Dependency를 설정합니다 [Unit type] 특정 유닛이 type-specific 지시자를 가지고 있다면 해당 옵션에 대한 항목을 참조하여 유닛파일을 작성하거나 파악해야 합니다 [Install] 인스톨 관련 정보를 담고 있습니다. systemctl enable과 systemctl disabled 에 의한 동작이 기술되어 있습니다
  • 21. 21 - Internal Use Only - [Unit] 섹션 옵션 설명 Description 유닛에 대한 전반적인 설명을 기술합니다. 이 영역은 systemctl status 커맨드를 사용할때 표시됩니다 Documentation 유닛에 대한 문서를 참조할만한 URI 리스트를 기재하는 곳입니다 After After에 정의된 유닛이 활성화 된 이후에 유닛이 활성화 되어야 합니다. Requires와는 다르게 After는 After에 명시된 유닛을 활성화 시키지는 않습니다. Before는 After와 반대되는 기능의 옵션입니다 Requires Requires에 정의된 유닛 리스트에 의존성이 있음을 말합니다. Requires 리스트에 있는 유닛은 이 유닛과 같이 활성화 됩니다. 만약 Requires에 있는 유닛이 fail이 된다면, 이 유닛도 활성화 되지 못합니다 Wants Rqueires 보다는 약한 의존성을 나타냅니다. Wants에 있는 유닛이 fail이 되더라도 이 유닛을 활성화 될 수 있습니다 Conflicts Requires와 반대로 여기에 명시된 유닛이 활성화 되어 있다면 이 유닛을 활성화 될 수 없습니다
  • 22. 22 - Internal Use Only - [Unit type] 섹션 옵션 설명 Type 유닛의 시작 타입을 지정합니다. 아래와 같은 타입들이 존재합니다 • simple - 기본적인 형태이며, ExecStart에 있는 것이 메인 프로세스입니다 • forking - 이미 시작된 ExecStart 프로세스에서 child 프로세스를 생성하고 그 child 프로세스가 서비스의 main 프로 세스가 됩니다. 프로세스가 시작되면 부모 프로세스는 사라집니다 • oneshot - simple과 유사합니다. 다음 유닛이 시작되기 전에 사라집니다 • dbus - simple과 유사합니다. 메인 프로세스가 D-Bus 라는 이름을 얻게 될 경우만 다음 유닛이 시작됩니다 • notify - simple과 유사합니다. sd_notify() 펑션을 이용해서 메시지가 전달된 이후에만 다음 유닛이 시작됩니다 • idle - simple과 유사합니다. 모든 job이 끝날때까지 실질적인 실행이 지연됩니다 ExecStart 유닛이 시작되고 난 후 실행될 스크립트 커맨드를 정의 하는 곳입니다 ExecStop 유닛이 정지되고 난 후 실행될 스크립트 커맨드를 정의 하는 곳입니다 Restart 이 옵션이 정의되면 해당 프로세스가 모두 종료된 후 서비스가 재시작됩니다 RemainAfterExit True 로 설정하게 되면 프로세스가 종료된 후에도 서비스가 활성화 되어 있는 것으로 간주합니다. 기본값은 false 입니 다
  • 23. 23 - Internal Use Only - [Install] 섹션 옵션 설명 Alias 이 유닛의 별명을 설정할 수 있으며, 각 별명은 space로 구분됩니다 RequiredBy 이 유닛에게 의존성이 있는 유닛 리스트 입니다. 이 유닛이 활성화 되면 RequiredBy 리스트에 있는 유닛들은 Require 를 얻습니다 WantedBy 이 유닛에게 Wants를 갖는 유닛 리스트 입니다. 이 유닛이 활성화 되면 WantedBy 리스트에 있는 유닛들은 Want 를 얻습니다 Also Also 리스트에 있는 유닛은 이 유닛이 삭제되거나 설치될때 같이 삭제되거나 설치됩니다 DefaultInstance 유닛이 활성화 될 때 인스턴스화 될 유닛을 제합니다
  • 25. 25 - Internal Use Only - [Unit] 섹션 커맨드 설명 systemctl status <서비스명> 서비스의 상태 체크 systemctl stop <서비스명> 서비스의 정지 systemctl start <서비스명> 서비스의 시작 systemct enable <서비스명> 부트시 서비스 시작 활성화 systemctl disable <서비스명> 부트시 서비스 시작 비활성화 systemctl list-dependencies <서비스명> 서비스의 디펜던시를 출력 systemctl list-units --type <타입> 특정 타입을 출력 systemctl list-unit-files 시스템에 있는 모든 유닛의 리스트와 상태를 출력 systemctl list-unit-files 시스템에 있는 모든 유닛의 리스트와 상태를 출력 systemd-cgtop 각 각의 서비스가 사용하는 리소스를 보는 커맨드 systemd-cgls 각 각의 서비스에 할당되어 있는 프로세스를 출력 journalctl -k 현재 부트에서 kernel 메시지를 출력 journalctl -f 지속적으로 로그를 출력 journalctl -u 특정 unit에 대한 메시지를 출력
  • 26. 26 - Internal Use Only - 요약 OPEN SHARE CONTRIBUTE ADOPT REUSE