/엔지니어/OS / 시스템/journalctl 완전 활용 — systemd 로
OS / 시스템초급UbuntuDebianCentOSRHELjournalctl로그systemd

journalctl 완전 활용 — systemd 로그 조회와 분석

journalctl로 시스템 로그를 조회·필터링·분석하는 방법을 실무 시나리오와 함께 정리합니다.

기본 조회

Bash
# 전체 로그 (최신 순)
journalctl -r

# 마지막 100줄
journalctl -n 100

# 실시간 스트림 (tail -f 같은)
journalctl -f

# 부팅 이후 로그
journalctl -b

# 이전 부팅 로그 (-1 = 직전)
journalctl -b -1

서비스별 필터링

Bash
# 특정 유닛 로그
journalctl -u nginx
journalctl -u nginx -f  # 실시간

# 여러 유닛
journalctl -u nginx -u php-fpm

# 특정 PID
journalctl _PID=1234

시간 범위 필터

Bash
# 오늘 로그
journalctl --since today

# 특정 시간 범위
journalctl --since "2024-01-15 10:00:00" --until "2024-01-15 12:00:00"

# 1시간 전부터
journalctl --since "1 hour ago"

우선순위(레벨) 필터

Bash
# error 이상만
journalctl -p err

# warning ~ error 범위
journalctl -p warning..err

# 레벨: 0=emerg, 1=alert, 2=crit, 3=err, 4=warning, 5=notice, 6=info, 7=debug

출력 형식

Bash
# JSON 출력 (로그 파이프라인에 유용)
journalctl -u nginx -o json | jq '.MESSAGE'

# 메시지만 (cat 형식)
journalctl -o cat -u myapp

# 커널 메시지만 (dmesg 대체)
journalctl -k

실무 시나리오

Bash
# 서비스 크래시 원인 찾기
journalctl -u myapp -p err --since "1 hour ago"

# 부팅 실패 원인
journalctl -b -1 -p err

# OOM killer 발생 확인
journalctl -k | grep -i "oom\|killed process"

# SSH 로그인 실패 모니터링
journalctl -u sshd | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -rn

# 로그를 파일로 저장
journalctl -u nginx --since today > /tmp/nginx-today.log

로그 용량 관리

Bash
# 현재 저널 용량
journalctl --disk-usage

# 오래된 로그 삭제 (2주 이상)
journalctl --vacuum-time=2w

# 용량 제한 (500MB)
journalctl --vacuum-size=500M

/etc/systemd/journald.conf에서 SystemMaxUse=500M, MaxRetentionSec=2week으로 영구 설정 가능합니다.

#journalctl#로그#systemd#모니터링#디버깅
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.