1. systemd란?
systemd(System and Service Manager)는 리눅스 운영체제에서 부팅과 서비스 관리를 담당하는 핵심 시스템 관리 도구이다.
📌 컴퓨터가 켜지면 해야 할 일이 많다!
컴퓨터가 부팅되면 여러 프로그램들이 자동으로 실행되어야 한다.
✅ 네트워크 연결(네트워크 서비스) → 인터넷 연결 설정
✅ 웹 서버 실행(nginx, apache) → 홈페이지를 제공
✅ 데이터베이스 실행(MySQL, PostgreSQL) → 데이터를 저장하고 관리
✅ SSH 서버 실행(sshd) → 원격 접속할 수 있도록 허용
💡 이런 것들을 일일이 사람이 직접 실행하면 너무 불편하다.
→ 따라서 systemd 서비스가 자동으로 실행하고 관리해 준다.
systemd는 PID 1을 가지는 프로세스로, 시스템이 부팅될 때 가장 먼저 실행되며, 운영체제의 모든 서비스와 프로세스를 관리하고 있다.
2. systemd 관련 주요 디렉터리
경로 | 설명 |
/run/systemd/system/ | 시스템이 부팅될 때 임시로 생성되는 Unit 파일들이 저장됨. (재부팅 시 초기화됨) |
/etc/systemd/system/ | 사용자가 직접 만든 서비스(Unit) 파일이 저장되는 곳. 배포판 기본 파일보다 우선 적용됨. |
/usr/lib/systemd/system/ | 배포판(예: CentOS, Ubuntu)에서 기본 제공하는 서비스(Unit) 파일이 저장됨. |
3. systemd의 핵심 구성 요소
systemd는 여러 개의 Unit(단위, 유닛) 파일로 구성되어 있다.
각 Unit은 특정한 역할을 수행하며, 서비스, 타이머, 마운트, 네트워크 등을 관리한다.
✅ 주요 Unit 유형
Unit 종류 | 설명 | 파일 확장자 |
Service | 특정 서비스(Nginx, MySQL 등) 관리 | .service |
Target | 여러 Unit을 그룹으로 묶는 역할 (부팅 모드 설정) | .target |
Socket | 소켓 활성화 및 관리 (On-demand 서비스 실행) | .socket |
Path | 특정 파일 또는 디렉터리 변화 감지 후 서비스 실행 | .path |
- 서비스(service)
1️⃣ 서비스 시작 (서비스가 꺼져있을 때)
서비스가 실행되지 않고 있을 때는 start 명령어로 시작해야한다.
systemctl start nginx # Nginx 웹 서버 시작
2️⃣ 서비스 상태 확인 (서비스가 실행 중인지 확인)
서비스가 제대로 실행되고 있는지 상태를 확인하려면 status 명령어를 사용
systemctl status nginx # Nginx 웹 서버 상태 확인
- 실행 중이면 active (running) 상태가 표시된다.
3️⃣ 서비스 재시작 (문제가 있을 때)
서비스가 잘못 동작하거나 설정을 변경한 후에는 재시작이 필요할 수 있다.
systemctl restart nginx # Nginx 웹 서버 재시작
- 재시작은 서비스 중지 후 다시 시작하는 과정임
4️⃣ 서비스 자동 실행 설정 (부팅 시 자동 시작)
서비스를 부팅 시 자동으로 시작되게 설정하려면 enable 명령어를 사용해.
systemctl enable nginx # Nginx 웹 서버 부팅 시 자동 실행 설정
- 이 설정을 하면 서버가 부팅할 때 자동으로 웹 서버가 시작됨
5️⃣ 서비스 자동 실행 해제 (부팅 시 자동 시작 해제)
서비스를 부팅 시 자동으로 시작되지 않게 하려면 disable 명령어를 사용해.
systemctl disable nginx # Nginx 웹 서버 자동 실행 해제
6️⃣ 서비스 중지 (서비스가 필요 없을 때)
서비스를 중지하려면 stop 명령어를 사용해.
systemctl stop nginx # Nginx 웹 서버 중지
- 서비스가 더 이상 필요 없을 때 사용해.
✅ 주요 서비스 상태에 대한 값
상태값 | 설명 |
loaded | 유닛의 환경 설정 파일이 로드되었음을 나타냄. 서비스가 제대로 설정된 상태. |
enabled | 부팅 시 자동으로 시작되도록 설정된 상태. systemctl enable 명령어로 설정됨. |
disabled | 부팅 시 자동으로 시작되지 않음. systemctl disable 명령어로 설정됨. |
active (running) | 서비스가 정상적으로 실행 중인 상태. 해당 서비스가 제대로 동작하고 있다는 의미. |
active (exited) | 일회성 프로세스가 성공적으로 종료된 상태. 예를 들어, 서비스가 한 번 실행 후 종료됨. |
active (waiting) | 서비스가 동작 중이나, 기타 이벤트나 작업을 기다리고 있는 상태. |
inactive (dead) | 서비스가 정상적으로 종료된 상태. 더 이상 실행되지 않고 있는 상태.t |
static | 서비스가 독립적으로 활성화되지 않으며, 다른 유닛에 의해 활성화될 수 있는 상태. |
- 타깃(target)
systemd의 타깃은 프로그램과 기능들을 그룹으로 묶어 관리하고, 특정한 상황에 맞춰 필요한 기능들을 한 번에 실행하거나 중지할 수 있도록 도와주는 개념이다.
타깃을 사용하면 시스템 관리가 더욱 편리하고 효율적으로 이루어질 수 있다.
✅ 타겟의 종류
Target | 설명 | 이전 init 체제 runlevel |
poweroff.target | 시스템 종료 | 0 |
rescue.target | 응급 복구 모드 (단일 사용자 모드) | 1 |
emergency.target | 응급 복구 모드 (루트 파일 시스템 읽기 전용) | - |
multi-user.target | 다중 사용자 모드 (텍스트 기반 로그인) | 2, 3, 4 |
graphical.target | 그래픽 모드 (X Window 시스템) | 5 |
reboot.target | 재부팅 | 6 |
'OS > Linux' 카테고리의 다른 글
[Linux] tee (0) | 2025.02.02 |
---|---|
[Linux] 커널이란? (0) | 2025.02.02 |
[Linux] alias (0) | 2025.02.02 |
[Linux] 리다이렉션(Redirection) (0) | 2025.02.01 |
[Linux] 파이프(pipe)란 (0) | 2025.02.01 |