journalctl은 어떤 명령어인가요?
journalctl은 systemd 기반 리눅스 시스템(Ubuntu 포함)에서 시스템 로그를 조회하고 관리하는 강력한 도구입니다. 과거에는 /var/log/syslog나 /var/log/messages 같은 텍스트 파일로 로그가 저장되었지만, systemd가 도입되면서 로그는 이제 바이너리 형식의 "저널(Journal)" 이라는 곳에 저장됩니다.
journalctl은 이 바이너리 형식의 저널에서 로그를 읽어와 사용자가 읽기 쉬운 형태로 출력해줍니다.
journalctl의 주요 특징:
- 중앙 집중식 로깅: 커널, 시스템 서비스, 사용자 애플리케이션 등 시스템에서 발생하는 모든 로그를 한곳에 모아 관리합니다.
- 바이너리 형식: 로그가 텍스트 파일이 아닌 바이너리 형식으로 저장되어 검색 및 필터링 속도가 빠르고, 위변조 방지 기능이 강화됩니다.
- 다양한 필터링 옵션: 시간, 서비스, 부팅 세션, 우선순위, 키워드 등 다양한 기준으로 로그를 필터링하여 원하는 정보만 쉽게 찾을 수 있습니다.
- 구조화된 로그: 각 로그 항목에 다양한 메타데이터(예: 프로세스 ID, 유닛 이름, 시간 등)가 함께 저장되어 분석에 용이합니다.
로그 확인하는 방법
journalctl 명령어를 사용하면 다양한 방법으로 로그를 확인할 수 있습니다.
1. 모든 로그 보기
가장 기본적인 사용법으로, 시스템의 모든 로그를 시간순으로 표시합니다.
journalctl
팁: 로그 양이 많으면 less 명령어처럼 페이지 단위로 표시됩니다. Page Up/Page Down 키나 화살표 키로 스크롤할 수 있고, q 키를 눌러 종료합니다.
2. 실시간 로그 보기 (tail -f처럼)
새로운 로그 메시지가 추가될 때마다 실시간으로 화면에 출력합니다.
journalctl -f
Ctrl+C를 눌러 종료할 수 있습니다.
3. 특정 서비스/유닛의 로그 보기
특정 서비스(예: udisks2, nginx, apache2)의 로그만 보고 싶을 때 사용합니다.
journalctl -u udisks2.service
실시간으로 보려면 -f 옵션을 추가합니다.
journalctl -u udisks2.service -f
4. 특정 부팅 세션의 로그 보기
시스템 재부팅 후의 로그만 보고 싶을 때 유용합니다.
- 현재 부팅 세션의 로그:
journalctl -b - 이전 부팅 세션의 로그: (가장 최근 부팅은 0, 그 이전은 -1, -2 등으로 표시)
부팅 세션 목록을 확인하려면 journalctl --list-boots를 사용합니다.
journalctl -b -1 # 바로 이전 부팅 journalctl -b -2 # 두 번째 이전 부팅
5. 로그 메시지 필터링 (우선순위, 키워드 등)
- 우선순위별 필터링: (emerg, alert, crit, err, warning, notice, info, debug)
journalctl -p err # 오류(error) 이상의 로그만 보기 journalctl -p warning # 경고(warning) 이상의 로그만 보기 - 특정 키워드 검색:
이것은 journalctl의 모든 출력을 grep으로 다시 필터링하는 방식입니다. journalctl 자체에도 --grep 옵션이 있지만, 일반적으로 grep이 더 강력합니다.
journalctl | grep "Error sending ATA command"
특정 시간부터 로그를 보는 방법
journalctl은 --since (이후)와 --until (이전) 옵션을 사용하여 특정 시간 범위의 로그를 조회할 수 있습니다. 날짜와 시간 형식은 매우 유연하게 입력할 수 있습니다.
1. 특정 날짜 이후의 로그:
journalctl --since "2025-05-29" # 2025년 5월 29일 자정부터
2. 특정 날짜와 시간 이후의 로그:
journalctl --since "2025-05-29 15:00:00" # 2025년 5월 29일 오후 3시부터
시간은 HH:MM:SS 또는 HH:MM 형식으로 입력할 수 있습니다. SS가 없으면 00으로 간주됩니다.
3. 특정 시간 범위의 로그:
journalctl --since "2025-05-29 10:00" --until "2025-05-29 11:00" # 29일 10시부터 11시까지
4. 상대적인 시간 표현 사용: 매우 유용한 기능으로, "1시간 전", "어제", "10분 전" 등 상대적인 시간 표현을 사용할 수 있습니다.
journalctl --since "1 hour ago" # 1시간 전부터 현재까지
journalctl --since "yesterday" # 어제 자정부터 현재까지
journalctl --since "2 days ago" # 2일 전부터 현재까지
journalctl --since "30 minutes ago" -u udisks2.service # 30분 전부터 udisks2 서비스 로그만
예시 (SSD 오류 로그를 1시간 전부터 보기):
journalctl --since "1 hour ago" | grep "Error sending ATA command IDENTIFY DEVICE"
이러한 journalctl 명령어를 통해 시스템의 로그를 효율적으로 확인하고 문제 진단에 활용할 수 있습니다.
'IT 관련 > 우분투(Ubuntu) 이것저것' 카테고리의 다른 글
| Ubuntu 24.04 웹 기반 서버 모니터링 (1) | 2025.06.06 |
|---|---|
| Ubuntu 서버(N100)에 Docker 설치방법 (0) | 2025.06.06 |
| Bananpi m5 USB-SSD 오류시 자동 재시작 (0) | 2025.05.30 |
| [왕초보] Banana Pi M5 메일 서버 호스팅 A to Z: 마지막! (0) | 2025.05.23 |
| [왕초보] Banana Pi M5 메일 서버 호스팅 A to Z: 5단계 최종점검, 유지보수, 백업 및 고급팁 (0) | 2025.05.23 |