Linux Systemd
🛠️ 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 |
자동 시작 해제 |
🧪 서비스 등록 예시
- 서비스 유닛 파일을 생성한다.
[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
- 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를 잊지 않는 것이 중요하다.
댓글남기기