blog.git

blog

~ Personal research notes. blog.sqzer.com
git clone https://github.com/debuman/blog.git

content/writing/journalctl.md (2886B)

      1 ---
      2 title: "journalctl"
      3 titleKo: ""
      4 date: 2025-12-07
      5 deck: ""
      6 type:
      7 tags: []
      8 draft:
      9 ---
     10 
     11 # journalctl
     12 
     13 - 리눅스 시스템의 systemd 가 관리하는 모든 로그를 조회하고 검새하는 도구
     14 - 과거에는 /var/log/syslog, /var/log/auth.log 등 테스트 파일을 일일이 열어봐야 했지만, 이제는 journalctl 명령어 하나로 통합 관리
     15 
     16 ## **journalctl -e** VS **journalctl -b -1 -e**
     17 
     18 두 명령어의 가장 큰 차이는 로그를 보는 시점(Timeframe) 이다.
     19 
     20 | 명령어 | journalctl -e | journalctl -b -1 -e |
     21 | --- | --- | --- |
     22 | 의미 | 현재 부팅(current Boot) 로그의 끝부분 | 직전 부팅(Last Boot)로그의 끝부분 |
     23 | 탐색 범위 | 부팅된 순간(0) -> 현재 시점 | 직전 부팅 시작 ~ 직전 부팅 종료(Crash) |
     24 | 사용 예 | 서비스 재시작 후 에러 확인, 실시간 모니터링 | 커널 패닉, 정전, 하드웨어 오류로 인한 비정산 재부팅 원인 |
     25 
     26 ### 상세 분석
     27 
     28 - journalctl -e
     29   - (Pager End): 스크롤을 맨 아래(최신)로 내려서 보여준다.
     30   - 기본적으로 현재 부팅된 세션의 로그를 보여준다.
     31 - journalctl -b -1 -e
     32   - -b -1 (Boot offset -1): 현재(0) 말고 바로 전(-1) 부팅 기록
     33 
     34 ### journalctl 필수 옵션
     35 
     36 #### 실시간 감시 (-f)
     37 
     38 새로운 로그가 들어오면 계속 화면에 출력한다.
     39 
     40 ```bash
     41 $ journalctl -f
     42 ```
     43 
     44 #### 특정 서비스만 보기 (-u)
     45 
     46 특정 서비스(Ex. ssh, tailscale)만 선택하여 확인한다.
     47 
     48 ```bash
     49 $ journalctl -u ssh
     50 ```
     51 
     52 #### 커널 메시지만 보기 (-k)
     53 
     54 하드웨어 오류(랜카드, 디스크), 방화벽 차단 로그 등은 주로 커널(Kernel) 이 남긴다.
     55 
     56 ```bash
     57 $ journalctl -k
     58 ```
     59 
     60 #### 시간 범위 지정 (--since, --until)
     61 
     62 특정 시간에 발생한 사건을 조회
     63 
     64 ```bash
     65 $ journalctl --since "2024-12-07 14:00:00" --until "2024-12-07 15:00:00"
     66 $ journalctl --since "1 hour ago"  # 1시간 전부터 지금까지
     67 ```
     68 
     69 #### 에러만 보기 (-P)
     70 
     71 정보(Info) 로그는 무시하고, 오류(Error)나 경고(Warning) 등 심각한 것만 확인
     72 
     73 ```bash
     74 $ journalctl -p err   # 에러(3) 등급 이상만 표시
     75 ```
     76 
     77 ### 로그 영구 저장 설정(비휘발성)
     78 
     79 #### 설정 파일 열기
     80 
     81 ```bash
     82 $ sudo vim /etc/systemd/journald.conf
     83 ```
     84 
     85 #### 옵션 수정
     86 
     87 ```vi
     88 [Journal]
     89 Storage=persistent
     90 SystemMaxUse=500M
     91 ```
     92 
     93 - Storage=persistent : 하드디스크에 영구 저장
     94 - SystemMaxUse=500M : 로그 파일이 너무 쌓여서 디스크를 꽉 채우지 않게 최대 500MB까지만 저장
     95 
     96 #### 서비스 재시작
     97 
     98 ```bash
     99 $ systemctl restart systemd-journald
    100 ```
    101 
    102 #### 적용 확인
    103 
    104 ```bash
    105 $ ls -d /var/log/journal
    106 /var/log/journal
    107 ```
    108 
    109 ### References
    110 
    111 1. https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
    112 2. https://manpages.ubuntu.com/manpages/noble/en/man1/journalctl.1.html
    113 3. https://wiki.archlinux.org/title/Systemd/Journal