Section 10.1: 서비스에서 발생한 문제점 진단하기

Fedora => 15, Ubuntu (서버 및 데스크탑 버전) >= 15.04, 그리고 RHEL/CentOS >= 7 와 같은 systemd 기반의 시스템들에서는 아래와 같은 명령어를 사용할 수 있다:

systemctl status [servicename]

...여기서 [servicename] 는 확인하고자 하는 서비스를 나타낸다; 예를 들어, systemctl status sshd 와 같이 수행할 수 있다.

위 명령어는 기본적인 상태 정보와 함께 최근 발생한 에러 로그가 있는 경우 이를 표시해줄 것이다.

journalctl 를 이용하면 추가적인 에러 정보를 더 확인할 수 있다. 예를 들어, journalctl -xe 명령어는 최근 1000 개의 로그를 pager 에 (less 와 같은) 불러들인 후, 가장 마지막 줄로 이동시켜 줄 것이다. journalctl -f 명령을 이용하면, 로그 출력 후 바로 종료하지 않고 새로운 로그가 더 들어올 때까지 계속해서 대기하게 될 것이다.

특정 서비스에 대한 로그들만 확인하기 위해서는 아래와 같이 -t 옵션을 이용한다:

journalctl -f -t sshd

다른 유용한 옵션들로는, 로그 우선순위 관련 지정을 하는 -p (-p warnings 은 warnings 밑 그 상위 로그들만 출력한다) 와, "가장 최근 부팅 이후 로그" 를 나타내는 -b, 그리고 "이후" 를 나타내는 -S 등이 있다 — 이들을 모두 사용해 보면, journalctl -p err -S yesterday 를 입력하여 어제 이후로의 모든 에러 로그들을 확인할 수 있다.

만약 journalctl 이 사용 가능하지 않거나, 시스템 journal 을 사용하지 않는 응용 프로그램의 에러 로그를 확인하고자 한다면, 파일의 가장 마지막 몇개의 라인을 보여주는 tail 명령어를 활용할 수 있다. -f ("follow" 의 의미) 옵션은 tail 의 매우 유용한 옵션인데, 이는 tail 로 하여금 파일에 새로 추가되는 데이터를 계속해서 출력하게 해 준다. 시스템상의 대부분의 서비스들의 메시지를 확인하고자 한다면:

tail -f /var/log/messages

혹은, 서비스가 특수한 권한을 가져 민감한 정보들을 로그로 남기는 경우에는:

tail -f /var/log/secure

어떤 서비스들은 자신만의 독자적인 로그 파일을 가지고 있는데, 좋은 예로는 리눅스의 audit daemon 인 auditd 가 있다. 이는 자신의 로그를 /var/log/audit/ 에 저장하게 되어 있다. 만약 특정 서비스 관련 출력 결과가 /var/log/messages 에 보이지 않는다면, /var/log/ 아래에서 해당 서비스 전용 로그 파일을 찾아보도록 한다

본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

+ Recent posts