리눅스 마스터 1급 시험 준비를 위한 이론을 정리한 문서입니다. systemd의 개요 및 systemcl 명령어에 대해서 알아보겠습니다.
Systemd 이란?
systemd은 초기화 및 시스템 관리 시스템을 사용합니다. 이는 이전의 SysV init 시스템보다 향상된 기능과 효율성을 제공합니다. 이러한 시스템은 시스템 부팅 및 종료 프로세스를 관리하며, 서비스 및 데몬의 자동 시작과 관리를 용이하게 해 줍니다 즉 시스템, 서비스를 관리하기 위한 역할을 맡고 있다고 이해하시면 될 것 같습니다
A.Systemd의 주요 기능
1. 빠른 부팅 및 성능 향상
Systemd는 병렬 부팅(parallel booting)을 통해 시스템 부팅 속도를 높였습니다. 이전의 순차적인 부팅과 비교하여 더욱 신속하고 효율적인 부팅 프로세스를 제공합니다. 또한, Systemd의 cgroups(Control Groups)를 이용하여 프로세스 및 서비스 관리를 통해 전체적인 성능을 향상합니다.
2. 단순한 구성과 관리
서비스 설정을 간편하게 할 수 있는 unit 파일을 사용합니다. 각 서비스마다 개별적인 unit 파일을 가지며, 이를 통해 서비스의 동작과 설정을 정의합니다. 이로써 관리자는 서비스를 추가하거나 수정할 때 더욱 직관적이고 효율적인 방식으로 구성할 수 있습니다.
3. 실패한 서비스의 자동 복구
서비스가 비정상적으로 종료되었을 경우 자동으로 재시작되도록 설정할 수 있습니다. 이는 시스템의 안정성을 유지하고 중요한 서비스의 지속적인 가용성을 보장하는 데 도움을 줍니다.
4. 로그 및 디버깅 관리
Systemd는 서비스 및 데몬의 로그를 효율적으로 수집하고 관리할 수 있는 도구들을 제공합니다. 이로써 시스템 문제의 진단과 해결이 용이해지며, 시스템 운영의 안정성을 높일 수 있습니다.
B.Systemd의 구조: Unit이란 무엇인가?
Systemd는 현대적인 리눅스 초기화 및 시스템 관리 시스템으로, 여러 가지 작업을 단위별로 정의하고 관리하는 데 사용되는 unit이라는 개념을 사용합니다. 이 unit은 시스템의 다양한 구성 요소를 추상화하여 관리하고, 시스템을 시작하거나 종료할 때 작업을 조직화하고 제어하는 데 사용됩니다.
Unit의 종류
Systemd에서는 다양한 종류의 unit이 존재하며, 각 unit은 특정 작업을 나타냅니다. 주요한 unit의 종류는 다음과 같습니다:
- Service Unit: 서비스를 나타내며, 백그라운드에서 실행되는 프로세스를 관리합니다. 예를 들어, 웹 서버나 데이터베이스 서버와 같은 백그라운드 애플리케이션을 관리하는 데 사용됩니다.
- Socket Unit: 소켓을 나타내며, 네트워크 통신을 처리하는 소켓을 관리합니다. 서비스와 클라이언트 간의 통신을 위해 사용됩니다.
- Device Unit: 하드웨어 장치를 나타내며, 특정 장치의 제어와 관리를 담당합니다.
- Mount Unit: 파일 시스템 마운트 포인트를 나타내며, 파일 시스템을 마운트 하거나 원마운트하는 작업을 관리합니다.
- Timer Unit: 주기적인 작업을 나타내며, 특정 시간 간격으로 작업을 실행하는 데 사용됩니다.
- Path Unit: 파일 또는 디렉터리를 감시하며, 해당 경로에 변화가 생겼을 때 특정 작업을 실행하는데 사용됩니다
- Target Unit: Target unit은 일종의 작업 집합이며, 여러 개의 unit들을 종합적으로 관리하는 역할을 합니다. 특정 작업을 실행하거나 시스템을 특정 상태로 전환하는 등의 목적으로 사용됩니다.
Unit 파일
각각의 unit은 해당 작업을 정의하는 unit 파일을 가지고 있습니다. 이 unit 파일은 일반적으로 /etc/systemd/system/ 디렉터리에 위치하며, unit의 종류에 따라 파일의 이름이나 확장자가 다를 수 있습니다. 예를 들어, 서비스 unit의 파일은. service확장자를 가지고 있습니다.
Unit 파일에는 해당 unit의 설정 정보, 실행 경로, 의존성 등이 정의되어 있습니다. 이러한 정보를 통해 Systemd는 시스템 부팅 및 운영 중에 unit을 적절하게 관리하고 실행합니다.
Unit의 중요성
Unit은 Systemd의 핵심 개념 중 하나로, 시스템의 구성 요소를 추상화하고 효율적으로 관리하는 데 사용됩니다. 각 unit은 특정 작업을 정의하고 이 작업의 실행 및 관리를 담당하며, 이를 통해 시스템의 안정성과 성능을 유지할 수 있습니다.
C.systemctl 주요 명령어 모음
#왜 이렇게 길어! 하시는 분들이 있을 것 같은데요 정말 systemctl 명령어는 무. 조. 건 쓰입니다. 보통 ssh를 자주 사용해야 하고 특히 대기업, 공공기관 서버관리, 운영에 있어서 들어가는데 복잡한 절차를 가진 전산실에 출입을 원할 때마다 갈 수 없기 때문에... 원격 접속을 많이 해야 하는 입장에서는 systemctl 명령어와 정말 많이 친해져야 돼요! 시험이 아니라도 이 명령어는 정~~~ 말 기억하고 있어야 됩니다
1. systemctl start [unit 이름]
unit을 시작합니다. 예를 들어, systemctl start apache2 명령은 아파치 웹 서버를 시작합니다.
2. systemctl stop [unit 이름]
unit을 중지합니다. 예를 들어, systemctl stop nginx 명령은 엔진엑스 웹 서버를 중지합니다.
3. systemctl restart [unit 이름]
지정된 unit을 재시작합니다. 이 명령은 unit을 중지한 후 다시 시작합니다. 예를 들어, systemctl restart mysql 명령은 MySQL 데이터베이스 서버를 재시작합니다.
4. systemctl enable [unit 이름]
지정된 unit을 부팅 시 자동으로 시작하도록 설정합니다. 예를 들어, systemctl enable ssh 명령은 SSH 서비스를 부팅 시 자동으로 활성화합니다.
5. systemctl disable [unit 이름]
지정된 unit을 부팅 시 자동으로 시작하지 않도록 설정합니다. 예를 들어, systemctl disable apache2 명령은 아파치 웹 서버를 부팅 시 자동으로 비활성화합니다.
6. systemctl status [unit 이름]
지정된 unit의 상태를 확인합니다. 이 명령을 통해 현재 unit의 실행 상태와 로그를 확인할 수 있습니다. 예를 들어, systemctl status nginx 명령은 엔진엑스 웹 서버의 상태를 표시합니다.
7. systemctl get-default
시스템의 기본 타깃을 확인합니다. 기본 타겟은 시스템 부팅 후 자동으로 활성화되는 타겟을 의미합니다.
8. systemctl list-units --type target
시스템에 있는 모든 타겟 unit들의 목록을 출력합니다. 이 명령을 통해 시스템 내에서 사용 가능한 타깃들을 확인할 수 있습니다.
9. systemctl poweroff / systemctl reboot / systemctl suspend / systemctl halt
전원을 종료하거나 재부팅하거나 대기 상태로 전환하는 명령어입니다. poweroff는 시스템을 종료하고, reboot는 시스템을 재부팅하며, suspend는 시스템을 대기 상태로 전환합니다. 또한 systemclt halt , systemctl hibernate , systemctl hybrid-sleep 등 과 같은 명령어도 있는데 한 번씩만 사용해 보시면 될 것 같습니다
10. systemctl enable-remote [unit 이름]
원격으로 접근 가능한 서비스를 부팅 시 자동으로 시작하도록 설정합니다. 원격으로 관리할 필요가 있는 서비스에 사용됩니다.
D. 자주 할 수 있는 질문
질문 1: service 명령어도 있지 않나요? 왜 service 명령어 대신에 systemctl 명령어를 써야 되나요
답변:systemctl은 서비스 관리를 편하게 해주는 도구로, service 기능+추가적인 기능을 제공하며, 여러 시스템에서 호환되고 설정도 쉬우며, 로그도 확인하기 쉬워요. 스마트폰 구세대와 신세대에 카메라 기능 차이정도 이해하기 쉬울 것 같습니다.
결론
systemctl 명령어는. 빠른 부팅, 단순한 구성, 자동 복구 기능 등은 시스템 관리를 효율적으로 할 수 있게 해 주며, 뛰어난 로깅 및 디버깅 기능은 시스템 운영의 투명성을 높여줍니다. 이러한 특징들을 통해 서버 및 컴퓨팅 환경에서 안정성과 성능을 추구하는 사용자들에게 뛰어난 선택지를 제공합니다.
'리눅스 > 리눅스마스터1급' 카테고리의 다른 글
[리눅스마스터1급] 핵심 내용 정리: 리눅스 특징 (73) | 2023.08.29 |
---|---|
[리눅스마스터1급] 필수 개념 정리: 운영체제의 이해 (22) | 2023.08.29 |
[리눅스마스터] 리눅스 top 명령어와 CPU 성능 분석 (28) | 2023.08.22 |
[리눅스마스터1급] - 쉘 스크립트 변수와 expr 예제 포함 (91) | 2023.08.19 |
[리눅스마스터1급] - 주요 디렉터리 와 경로 (74) | 2023.08.18 |