더북(TheBook)

시스템 로그에서 오류 정보 가져오기

우분투 14.04 이후에 나온 대부분의 최신 리눅스 배포판에서는 journalctl 명령으로 모든 시스템 로그에 접근할 수 있다.

# journalctl

journalctl 명령을 실행해보면 알겠지만, 아무런 인자(argument)나 플래그 없이 이 명령을 실행하면 엄청나게 많은 로그 데이터가 쏟아진다. 이럴 때는 찾고자 하는 정보를 걸러낼 방법이 필요하다. 바로 grep이다.

# journalctl | grep filename.php ← 파이프 문자(|)는 어떤 명령(이 예제에서는 journalctl)의 출력을 다른 명령(grep)의 입력으로 연결한다

이 예제에 나오는 파이프 문자(|)는 Shift + \를 눌러 입력한다. 파이프는 journalctl의 출력을 grep 필터로 연결하는데, grep 명령은 filename.php 문자열을 담은 줄만 화면에 출력한다. 물론 여기에서는 웹 서버가 PHP를 실행하고 filename.php라는 파일이 있다고 가정했지만, 필자는 이런 파일명을 사용하지 않고 보통 stuff.php처럼 의미를 쉽게 파악할 수 있는 파일명을 사용한다.

grep을 연속해서 사용해 검색 결과를 더 좁혀볼 수 있다. 예를 들어, filename.php에 대한 저널 항목이 너무 많이 나오면 ‘error’라는 단어도 포함된 줄만 보고 싶을 수 있다. 이럴 때는 다음 명령처럼 첫 번째 결과에 파이프로 grep 명령을 한 번 더 적용해 ‘error’ 단어가 포함된 줄만 출력할 수 있다.

# journalctl | grep filename.php | grep error

또는 ‘error’ 단어가 없는 줄만 보고 싶다면 다음과 같이 grep-v 플래그를 추가해 반대 결과를 얻을 수 있다.

# journalctl | grep filename.php | grep -v error
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.