🛠️ systemd란?

정의

systemd는 리눅스 운영체제에서 부팅, 서비스 관리, 프로세스 추적을 담당하는 초기화(init) 시스템이다.

init.d, upstart를 대체하며, 현대적인 병렬 처리 기반 서비스 관리를 제공한다.

⚙️ systemd의 주요 기능

  • 서비스 단위를 Unit으로 관리한다.
  • 병렬 부팅 처리로 시작 시간을 줄일 수 있다.
  • 의존성 기반으로 실행 순서를 제어한다.
  • journalctl을 통해 로그를 확인할 수 있다.
  • systemd-timer로 예약 작업을 구성할 수 있다.

🧩 주요 Unit 종류

단위(Unit) 설명
service 데몬, 백그라운드 서비스
socket 소켓 기반 활성화
target 실행 그룹 묶음
mount 파일 시스템 마운트
timer 예약 실행

⌨️ systemctl 명령어

명령어 설명
systemctl start nginx nginx 서비스 시작
systemctl stop nginx nginx 서비스 중단
systemctl restart nginx nginx 서비스 재시작
systemctl status nginx nginx 상태 확인
systemctl enable nginx 부팅 시 자동 시작 등록
systemctl disable nginx 자동 시작 해제

🧪 서비스 등록 예시

  1. 서비스 유닛 파일을 생성한다.
[Unit]
Description=My Custom App Service
After=network.target

[Service]
ExecStart=/usr/bin/java -jar /opt/myapp/myapp.jar
Restart=always
User=nobody

[Install]
WantedBy=multi-user.target
  1. systemd에 변경 사항을 반영한다.
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
  • 서비스 파일을 수정한 뒤에는 daemon-reload로 새 설정을 다시 읽어야 한다.

🧾 로그 확인

journalctl -u myapp.service
journalctl -xe
journalctl --since "10 minutes ago"
  • 특정 서비스 로그, 최근 에러 로그, 지정 시점 이후 로그를 확인할 수 있다.

⚖️ systemd vs init 비교

항목 systemd SysV init
병렬 실행 O X
의존성 관리 O X
유닛 단위 관리 O X
로그 시스템 journalctl /var/log/messages
서비스 제어 systemctl service

📌 정리

  • systemd는 서비스와 부팅을 관리하는 현대적인 init 시스템이다.
  • systemctl로 서비스 제어를 하고, journalctl로 로그를 본다.
  • 서비스 파일 수정 후에는 daemon-reload를 잊지 않는 것이 중요하다.

연결문서

태그:

카테고리:

업데이트:

댓글남기기