OS/Linux

[Linux] systemd란?

장일규 2025. 2. 1. 20:34

 

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