일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- preprocessing
- selenium
- 리눅스
- X.org
- 셀레니움
- Binary Search
- External Scheme
- 자바
- OOP
- systemd
- Operator
- Unity
- Reference Type
- BFS
- X윈도우
- dbms
- spring
- Class
- literal
- descriptive statistics
- python
- 리눅스 마스터 1급
- Entity Set
- Entity
- Polymolphism
- Java
- Physical Scheme
- Mac
- 백준
- Inheritance
- Today
- Total
Byeol Lo
Linux master 1급 - systemd 란 본문
리눅스 마스터 1급의 이론서를 공부하면서 정리한 내용들을 적으려고 한다. 방학 동안 필기만 합격을 해놓고, 1학기의 강의를 들으면서 실기를 이번년도 상반기에 딸 것이다. 정리한 내용이 다른 분들에게도 도움이 되었으면 한다. 또한, 2급을 따지 않은 입장에서 쓴 글들은 정말 논리적으로 비약적이고, 높은 확률로 정확하지 않을 수 있으므로, 이를 보는 다른 사람들은 해당 글들을 비판하면서 볼 수 있었으면 좋겠습니다.
systemd 프로세스는 병렬 처리가 가능하도록 작성된 시스템 및 서비스를 관리하는 역할을 수행한다. 서비스 간 Dependencies를 고려하여 서비스의 시작 순서를 제어할 수 있는 기능을 제공하거나 시스템 서비스, 소켓상 패킷의 수신 대기, 실행 레벨(run level) 등의 시스템 및 서비스와 관련된 정보를 유닛(System Units)이라는 단위로 추상화하여 관리한다.
유닛(systemd units)
systemd는 시스템을 관리하기 위해 다양한 유닛(Service, Target, Autonount, Device, Mount, Path, Scope, Slice, Snapshot, Socket, Timer 등)을 제공한다.
유닛 유형 | 확장자 | 설명 |
Service unit | .service | 시스템 상에서 동작하는 서비스 또는 데몬과 연관된 유닛 |
Target unit | .target | 다수의 유닛을 하나의 그룹으로 관리할 수 있는 유닛, 대표적으로 SysV init에 존재하였던 실행레벨을 Target 유닛으로 관리할 수 있다. |
Device unit | .device | 커널이 인식 가능한 장치와 연관된 유닛, 가령 특정 USB 장치가 연결될 때 특정 서비스 유닛을 실행할 수 있다. |
Mount unit | .mount | 파일 시스템의 마운트 포인트를 나타내는 유닛 |
Path unit | .path | 파일 시스템의 파일과 디렉터리와 관련된 유닛 |
Socket unit | .socket | 프로세스 간 통신을 의미하는 IPC(inter-process cominucation)를 위해 사용하는 소캣과 연관된 유닛 |
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 : 유닛에 대한 설명 Document : 유닛의 설명이 있는 웹 경로(URLs)를 지정 After : 유닛이 시작할 순서를 정의 Requires : 유닛의 의존관계를 지정 Wants : Requires 보다는 약한 의존성을 지정 |
[Unit type] | 유닛 유형 마다의 특성을 기술한다. Service : [Service]라는 섹션 이름을 가짐. 해당 섹션의 ExecStart는 유닛이 실행할 때 실행할 명령어나 스크립트를 지정함. ExecStop은 유닛이 중지할 때 실행할 명령어나 스크립트를 지정함. |
[Install] | systemctl enable 또는 disable 명령어로 유닛을 제어할 때 필요한 정보를 담고 있다. RequireBy : 해당 유닛에 의존하고 있는 유닛의 목록을 지정 WantedBy : 유닛에 약한 의존관계를 갖고 있는 목록을 지정 |
systemd의 주요 명령어
서비스 관리
- systemctl start name.servivce : 서비스 시작
- 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 rooot@linuxserver.example.com status httpd.service
'OS > Linux' 카테고리의 다른 글
Linux master 1급 - 리눅스의 다양한 파일 시스템 (0) | 2023.02.04 |
---|---|
Linux master 1급 - 파일 시스템 이해 (1) | 2023.01.30 |
Linux master 1급 - 주요 디렉터리 구조 (0) | 2023.01.26 |
Linux master 1급 - 리눅스 구동 (0) | 2023.01.26 |
Linux master 1급 - Physical Volume과 Linux (4) | 2023.01.26 |