리눅스 시스템 로그를 읽기 위한 journalctl 사용법

수년간 시스템 및 커널 로그는 syslogd라는 유틸리티로 처리되었습니다. 대부분의 리눅스 기반 운영 체제는 시스템 로그를 관리하기 위해 journald라는 다른 로그 데몬을 가진 systemd로 이주하였습니다. 이러한 로그와 상호작용하기 위해 journalctl 유틸리티를 사용합니다.
시스템 로그 읽을 수 있는 사용자 권한 부여
“adm” 또는 “systemd-journal” 그룹에 속한 사용자만이 systemd 로그를 읽을 수 있습니다. 우분투와 같은 배포판은 이미 사용자를 adm 그룹에 추가합니다.
터미널 에뮬레이터를 열고 다음 명령어를 입력합니다:
groups
출력에 “adm” 또는 “systemd-journal”이 보인다면 이 섹션의 나머지 단계를 건너뛸 수 있습니다. 그렇지 않다면 “adm” 그룹에 자신을 추가합니다.
sudo adduser $USER adm이 변경사항이 적용되려면 로그인 세션을 다시 시작해야 합니다(로그아웃 후 로그인). 여러 가지 이유로 그렇게 할 수 없다면 이 명령어를 사용하여 그래픽 세션을 재시작하지 않고 새 그룹에 로그인합니다.
newgrp adm터미널 창을 닫지 마세요. 이제 당신은 adm 그룹의 일원입니다 - 터미널 세션에서는 그렇지만 그래픽 세션에서는 아닙니다. 이때 새 터미널을 열면, 사용자는 더 이상 adm 그룹에 로그인되어 있지 않습니다.
저널이 지속적인지 확인하기
systemd 로그는 지속적(persistent)일 수도 있고 휘발성(volatile)일 수도 있습니다. 우분투 및 기타 배포판에서는 기본적으로 지속적입니다. Debian 9에서는 휘발성이며, 이는 메모리(디스크가 아님)에만 저장되고 전원 꺼짐 또는 재부팅 시 사라진다는 의미입니다. 다음 명령어를 입력합니다.
journalctl --list-boots
여기에 여러 개의 항목이 있으면 더 이상 할 일이 없습니다. 이는 저널이 디스크에 저장되어 있다는 것을 의미합니다(지속적입니다). 만약 하나의 항목만 나타난다면, 저널은 휘발성입니다. 지속적으로 변경합니다.
sudosed-i'/Storage/ c\Storage=persistent'/etc/systemd/journald.conf볼 부팅 항목 로그 선택하기
보통 현재 부팅 로그를 보고 싶을 것입니다. 시스템이 오류가 발생했을 때와 같이 이전 부팅 로그를 보고 싶을 때도 가끔 있습니다.
현재 부팅 로그를 보려면:
journalctl -b0
이전 부팅 로그를 보려면 “0” 대신 “-1”을 사용하고, 두 번 전의 부팅은 “-2”와 같이 진행합니다.
journalctl -b-1시스템 저널 탐색 및 검색
journalctl로 로그를 연 후에는 화살표 키와 PAGE UP 또는 PAGE DOWN 키로 텍스트를 탐색할 수 있습니다. 기타 유용한 키는 다음과 같습니다:
출력의 끝으로 이동합니다.
- < 출력의 시작으로 이동합니다.
- / 텍스트 문자열을 검색합니다. 슬래시 키를 누른 후 찾고 싶은 문자열을 입력하고 Enter를 누릅니다. 문자열은 대소문자를 구분하므로 “network”는 “Network” 문자열을 찾지 않습니다. 검색은 현재 보기 위치에서 아래로 시작합니다. 위로 검색하려면 ?를 사용하세요.
- n 현재 검색에서 다음 일치를 찾습니다. N은 이전 것을 찾습니다.
- q journalctl 유틸리티를 종료합니다.

우선순위별 로그 항목 필터링
가끔 오류만 검색하고 경고 및 상태 메시지는 무시하고 싶을 수 있습니다. 로그의 각 항목은 우선순위를 가지고 있습니다: 긴급, 경고, 중요, 오류, 경고, 공지, 정보. 이들은 중요도에 따라 나열되며, 긴급은 최악의 경우(시스템 사용 불가)에 해당합니다. 정보 메시지는 단순한 정보 텍스트로, 정상적으로 작동하는 프로그램의 상태를 보고합니다.
현재 부팅의 오류 메시지만 표시하려면, 다음을 입력합니다:
journalctl -b0-p err
모든 부팅에서 오류를 보려면 “-b” 매개변수를 제거하면 됩니다:
journalctl -p err다음은 “-p” 매개변수에 전달할 수 있는 코드입니다:
- alert
- crit
- debug
- emerg
- err
- info
- notice
- warning
프로세스 실행 파일 또는 systemd 단위 경로로 로그 항목 필터링
일부 프로세스는 소위 systemd 단위에 의해 시작되고 관리됩니다. cron 서비스 단위와 관련된 모든 로그를 보려면 다음을 입력합니다:
journalctl -u cron.service사용 가능한 단위를 보려면 다음을 입력합니다:
systemctl list-dependencies
위아래 화살표 키로 목록을 탐색할 수 있습니다. q를 눌러 종료합니다.
프로그램의 실행 파일(바이너리) 경로를 사용하는 것을 선호한다면, 인수로 전체 경로를 전달하면 됩니다.
journalctl /usr/sbin/cron불필요한 메시지를 제거하기 위해 현재 부팅 항목으로 필터링하는 것도 잊지 마세요.
journalctl -b0/usr/sbin/cron결론
journalctl은 원하는 내용을 쉽게 찾을 수 있도록 돕습니다. 사용할 수 있는 더 많은 고급 매개변수에 대해 배우고 싶다면, journalctl 명령 매뉴얼 페이지를 참조하세요.