Devlog

[Linux] 특정 service의 로그를 보는 방법 본문

OS/생활리눅스

[Linux] 특정 service의 로그를 보는 방법

recoma 2024. 2. 24. 11:15

계기

저의 또 다른 개발 블로그(프론트엔드 포트폴리오용)에 소개 페이지를 추가하고 systemctl을 이용해서 재배포를 했더니

분조장을 유발하는 500에러가 터졌습니다

이런 얼탱이없는 사고가 왜 났는지 파악하기 위해 systemctl status명령어를 사용했습니다

 

 

 

파란 불이 켜저있지만 밑에 로그는 빨간불인 것처럼 보이는군요

listOnTimeout 이라는 내용이 있는 걸 보니 뭔가 무한루프를 도는 것 같습니다

하지만 이거 가지고는 원인을 파악할 수가 없죠

로그의 전체 내용을 보아야 할 필요가 있습니다

그러면 어떤 명령어를 입력해야 할까요?

정답은 jouralctl 이라는 명령어를 사용하면 됩니다.

 

사용법

$ sudo journalctl -u [서비스 이름]

위의 명령어를 입력해먼 해당 서비스에 대한 로그를 처음부터 확인할 수 있습니다.

'node' no such file or directory라는 에러 문구가 보이네요. 여기에서 문제가 터졌나 봅니다

 

특정 조건을 만족하는 로그 내역 가져오기

아까 전에는 특정 서비스에 대해 로그를 가져왔습니다.

하지만 특정 서비스 말고도 작동되고 있는 service의 전체 로그를 가져올 수 있는 방법이 있습니다

-u [서비스 이름] 만 빼면 모든 서비스의 로그를 가져옵니다

sudo journalctl

 

특정 시간의 로그를 확인하려면 --since와 --until을 추가합니다

2024년 2월 24일 10시 부터 10시 10분 사이의 로그를 보고 싶은 경우 아래와 같이 입력하면 됩니다

sudo journalctl --since "2024-02-24 10:00:00" --until "2024-02-24 10:10:00"

 

날짜를 따로 지정하는 것은 매우 귀찮은 일입니다

그래서 journalctl은 최근 N개의 로그만 가져오는 기능도 제공합니다

sudo journalctl -n [로그 갯수]

 

갯수 관심 없고 그냥 맨 끝으로 이동하고 싶다! 하면 -e를 추가합니다

sudo journalctl -e

 

마지막으로 로그를 실시간으로 볼 수 있는 기능도 제공합니다

service에서 뭔가 메세지를 보내면 콘솔에서도 실시간으로 출력되는 기능이죠

-f를 사용합니다

sudo journalctl -f

 

이렇게 해서 특정 service의 로그를 확인하는 방법에 대해 알아보았습니다

저는 이 기능을 통해 node 명령어를 제대로 찾을 수 없다는 원인을 파악했구요

이제 얘가 안돌아가는 문제를 해결하러 가보겠습니다 ㅂㅂ

반응형