Contents
see List작성일 2025. 11. 30.
systemd 서비스 관리
systemd는 현대 리눅스의 표준 init 시스템으로, 서비스 시작/중지, 부팅 시 자동 실행, 로그 관리 등을 담당합니다.
언제 사용하나요?
- 서버 재부팅 후 서비스 자동 시작 설정
- Java/Node.js 애플리케이션을 데몬으로 실행
- 서비스 상태 모니터링 및 재시작 정책 설정
- 서비스 로그 확인 및 관리
기본 명령어
# 서비스 시작
sudo systemctl start nginx
# 서비스 중지
sudo systemctl stop nginx
# 서비스 재시작
sudo systemctl restart nginx
# 설정 리로드 (중단 없이)
sudo systemctl reload nginx
# 서비스 상태 확인
sudo systemctl status nginx
# 부팅 시 자동 시작 활성화
sudo systemctl enable nginx
# 부팅 시 자동 시작 비활성화
sudo systemctl disable nginx
# 활성화 + 즉시 시작
sudo systemctl enable --now nginx서비스 파일 위치
# 시스템 서비스
/usr/lib/systemd/system/
# 사용자 정의 서비스 (권장)
/etc/systemd/system/
# 사용자 서비스
~/.config/systemd/user/커스텀 서비스 만들기
# /etc/systemd/system/myapp.service
[Unit]
Description=My Java Application
After=network.target mysql.service
Wants=mysql.service
[Service]
Type=simple
User=appuser
Group=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
# 환경 변수
Environment=JAVA_HOME=/usr/lib/jvm/java-11
Environment=SPRING_PROFILES_ACTIVE=production
EnvironmentFile=/opt/myapp/.env
[Install]
WantedBy=multi-user.target서비스 타입 설명
| Type | 설명 |
|---|---|
| simple | 기본값. ExecStart 프로세스가 메인 프로세스 |
| forking | fork하는 데몬 (PIDFile 필요) |
| oneshot | 실행 후 종료 (스크립트) |
| notify | sd_notify()로 준비 완료 알림 |
재시작 정책
Restart=no # 재시작 안 함 (기본)
Restart=on-success # 정상 종료 시에만
Restart=on-failure # 비정상 종료 시에만 (권장)
Restart=on-abnormal # 시그널로 종료 시
Restart=always # 항상 재시작
RestartSec=10 # 재시작 대기 시간 (초)
StartLimitBurst=5 # 시작 시도 횟수 제한
StartLimitIntervalSec=60 # 제한 기간서비스 등록 및 실행
# 서비스 파일 생성 후
sudo systemctl daemon-reload # 변경사항 적용
# 서비스 시작 및 활성화
sudo systemctl enable --now myapp
# 상태 확인
sudo systemctl status myapp로그 확인
# 특정 서비스 로그
journalctl -u myapp
# 실시간 로그
journalctl -u myapp -f
# 최근 100줄
journalctl -u myapp -n 100
# 오늘 로그만
journalctl -u myapp --since today
# 에러만
journalctl -u myapp -p err유용한 명령어
# 모든 서비스 목록
systemctl list-units --type=service
# 실패한 서비스
systemctl --failed
# 서비스 의존성 확인
systemctl list-dependencies nginx
# 서비스 파일 위치 확인
systemctl show -p FragmentPath nginx
# 서비스 파일 편집
sudo systemctl edit myapp --full
# 재시작 없이 환경 변수 리로드
sudo systemctl daemon-reload
sudo systemctl restart myappNode.js 서비스 예시
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=node
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/server.js
Restart=on-failure
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target문제 해결
# 서비스 상태 상세 확인
systemctl status myapp -l
# 부팅 로그 확인
journalctl -b
# 서비스 문법 검사
systemd-analyze verify /etc/systemd/system/myapp.serviceos
| No | 작성일 | Title |
|---|---|---|
| 2901 | 2026. 05. 28. | systemd 서비스 하드닝 실전 가이드: 권한·파일시스템·네트워크 접근 줄이기 |
| 2843 | 2026. 05. 20. | Linux 서버 로그 운영 실전 가이드: journald 영구 저장, 용량 제한, logrotate 점검법 |
| 2643 | 2026. 04. 29. | Kubernetes v1.36 Haru 완전 가이드: AI 워크로드 DRA, User Namespaces GA, PSI Metrics 실전 적용 |
| 2566 | 2026. 04. 21. | systemd 260 + Linux 6.19 핵심 신기능 완전 가이드: mstack, sched_ext, Varlink Metrics 실전 적용 |
| 2496 | 2026. 04. 14. | Linux 시스템 관리 완벽 가이드: systemd 258, Kernel 6.x, 현대적 CLI 명령어 |
| 2475 | 2026. 04. 13. | Linux 시스템 관리 2026 완벽 가이드: systemd, journalctl, 성능 튜닝, 보안 설정 |
| 2455 | 2026. 04. 12. | Linux 커널 6.12/6.13 신기능 완전 분석: PREEMPT_RT, sched_ext, Rust 통합 |
| 2431 | 2026. 04. 11. | macOS defaults 명령어로 숨겨진 설정 마스터하기 |
| 2395 | 2026. 04. 09. | macOS/Linux 터미널 고급 명령어 가이드 - 프로세스 관리, 네트워크 진단, 시스템 모니터링 |
| 2374 | 2026. 04. 08. | Linux 시스템 관리 실전 가이드 2025: 커널 최적화, 보안 강화, 자동화 명령어 총정리 |