리눅스용 시스템/서비스 매니저인 systemd 는 로그 데이타를 journal 이라는 바이너리 형식으로 저장합니다.

journalctl 은 저널에서 로그를 검색하고 볼 수 있는 유틸리티로 RedHat Enterprise Linux/CentOS 7 이상, Ubuntu 18 이상 사용자라면 시스템 관리를 위해서는 꼭 알아둬야 할 명령어입니다.


저널 보기

기본 보기

옵션없이 journalctl 을 실행하면 systemd 의 로그를 볼 수 있습니다.

journalctl
CODE

notice 나 warning 인 로그는 굵은 색으로 표시되며 error 는 빨간 색으로 표시되므로 로그의 중요도를 쉽게 파악할 수 있습니다.


최근 메시지만 보기

-n 옵션을 사용하면 최근 10 개 메시지만 표시할 수 있습니다.

journalctl -n
CODE


만약 -n 뒤에 숫자를 명시하면 해당 숫자만큼 최근 로그 메시지를 표시하며 아래 예제는 7개의 최근 로그 메시지를 보여줍니다.

journalctl -n 7
BASH

message catalog 사용

-x 옵션을 추가하면 message catalog 에서 해당 저널에 대한 상세 설명을 추가해서 보여 줍니다.

journalctl -xn
CODE




마지막 라인 표시

-n  옵션을 사용하지 않을 경우 처음 저널부터 표시합니다. -e(pager end) 옵션을 주면 pager 를 사용해서 마지막 에러 메시지 라인부터 볼 수 있습니다.

journalctl -x -e
CODE


짤리는 페이지 개행하기

가끔 터미널의 컬럼 길이가 작을 경우 pager 가 개행을 하지 않아서 메시지가 잘려서 표시될 수 있습니다. 이런 경우 --no-pager 옵션을 사용하면 pager 를 사용하지 않으므로 짤리는 페이지 없이 저널을 볼 수 있습니다.

journalctl -xn --no-pager | less
CODE

변경 사항 계속 보기

tail -f 옵션처럼 -f 를 사용하면 마지막 로그 내용을 보여준 후에 이후에 변경되는 로그 파일의 내용을 계속 출력해 줍니다.

journalctl -f
CODE


필터링

특정 PID 저널만 보기

_PID={PID} 옵션을 사용하면 특정 PID 관련한 저널만 볼 수 있습니다. 아래는 pid 가 872 인 프로세스가 생성한 최근 10개의 저널을 보여 줍니다.

journalctl -n _PID=872
CODE


우선 순위로 필터링하기

-p 옵션을 사용하면 저널의 우선 순위(emerg, alert, crit, err, warning, notice, info, debug) 에 따라 저널을 필터링해서 볼 수 있습니다.


우선 순위가 높을수록 숫자가 낮으므로(emerg  = 0, debug = 7) 지정한 레벨 이상의 로그만 출력하며 다음 예제는 crit 이상인 레벨을 표시하므로 emerg, alert 저널도 같이 표시 됩니다.

journalctl -p critical 
CODE


날자/시간으로 필터링

--since 와 --until 옵션을 사용하면 특정 기간내의 저널만 뽑아서 볼 수 있습니다.


다음은 20년 1월 9일 이후에 생성된 저널만 표시합니다.

 journalctl --since 2020-01-09
CODE


1월9일, 10일에 생성된 저널만 보고 싶을 경우 --until 옵션을 추가하면 되며 주의할 점은 util 은 ~ 전까지이므로 01-11로 지정해야 10일까지 저널이 표시됩니다.

 journalctl --since 2020-01-09 --until 2020-01-11
CODE


날자는 yesterday, today, tomorrow 같은 단어를 주어도 되며 아래 예제는 어제와 오늘 생성된 저널을 표시합니다.

 journalctl --since yesterday --until tomorrow
CODE


저널이 많을 경우 시간이나 분으로 필터링할 수도 있습니다. 예로 아래는 최근 2시간전에 생성된 저널중 10분이전까지 저널만 표시합니다.

 journalctl --since "-2hour" --until "10min"
CODE


같이 보기


참고