우분투 실전 명령어 | journalctl 로그 조회 실전(서비스 단위/시간 범위)
언제 쓰는가
서비스가 갑자기 죽거나, 재부팅 이후 이상 동작이 생겼을 때 가장 먼저 보는 게 journalctl입니다. 파일 로그를 뒤지기 전에 systemd 저널에서 시간대와 서비스 단위로 좁히면 원인을 훨씬 빨리 찾을 수 있습니다. 특히 배포 직후 에러 확인이나 간헐 장애 추적에 자주 씁니다.
바로 쓰는 명령어
# 1) 최근 부팅 기준 전체 에러/경고 빠르게 확인
journalctl -b -p warning
# 2) 특정 서비스 로그만 확인
journalctl -u nginx -n 200 --no-pager
# 3) 오늘 18:00~19:00 구간만 조회
journalctl --since "today 18:00" --until "today 19:00" --no-pager
# 4) 실시간 추적
journalctl -u ssh -f
# 자주 쓰는 조합: 최근 부팅 + 특정 서비스 + 에러 등급만
journalctl -b -u docker -p err --no-pager
# UTC 대신 로컬 시간으로 보기
journalctl -u cron -o short-iso --no-pager
핵심 옵션/패턴
-u <service>: 서비스 단위 필터. 장애 분석 시작점으로 가장 안전합니다.-b: 현재 부팅 로그만 조회. 재부팅 이전 로그와 섞이는 실수를 줄입니다.-p <level>: 심각도 필터(err,warning,info등).--since / --until: 시간 범위 고정. “언제부터 깨졌는지” 확인할 때 필수입니다.-f: 실시간 추적. 재현 테스트하면서 바로 로그를 볼 때 편합니다.--no-pager: 자동 페이지 진입 방지. 스크립트나 원격 터미널에서 특히 유용합니다.
자주 하는 실수
- 서비스 이름을 잘못 넣는 경우:
nginx.service대신nginx처럼 짧은 이름이 되는 경우가 많습니다. 먼저systemctl list-units --type=service | grep -i nginx로 정확한 유닛명을 확인하세요. - 시간대를 착각하는 경우: 서버 UTC, 운영자 로컬 시간(KST)이 달라서 구간을 잘못 잡는 일이 잦습니다. 필요하면
timedatectl로 현재 타임존부터 확인하세요. -f만 켜고 과거 원인을 놓치는 경우: 실시간 로그만 보면 이미 지나간 에러를 못 봅니다. 먼저-n또는--since로 과거 구간 확인 후-f로 넘어가세요.
검증 방법
# 1) 서비스명 확인
systemctl list-units --type=service --all | grep -i nginx
# 2) 에러 로그가 실제로 잡히는지 확인
journalctl -u nginx -p err -n 20 --no-pager
# 3) 시간 필터가 의도대로 적용됐는지 확인
journalctl -u nginx --since "1 hour ago" --until "now" --no-pager
실행 결과 예시
$ journalctl -u nginx -p err -n 5 --no-pager
Feb 18 18:21:09 web-01 nginx[1921]: 2026/02/18 18:21:09 [error] 1921#1921: *883 connect() failed (111: Connection refused) while connecting to upstream
Feb 18 18:21:09 web-01 nginx[1921]: 2026/02/18 18:21:09 [error] 1921#1921: *883 upstream prematurely closed connection
Feb 18 18:21:10 web-01 systemd[1]: nginx.service: Failed with result 'exit-code'.
Feb 18 18:21:10 web-01 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Feb 18 18:21:12 web-01 systemd[1]: nginx.service: Scheduled restart job, restart counter is at 1.
$ journalctl --since "today 18:00" --until "today 18:10" -u ssh --no-pager
Feb 18 18:02:14 web-01 sshd[3551]: Accepted publickey for ubuntu from 10.0.2.14 port 51722 ssh2
Feb 18 18:02:14 web-01 sshd[3551]: pam_unix(sshd:session): session opened for user ubuntu(uid=1000)
Feb 18 18:07:39 web-01 sshd[3720]: Received disconnect from 10.0.2.14 port 51722:11: disconnected by user
Feb 18 18:07:39 web-01 sshd[3551]: pam_unix(sshd:session): session closed for user ubuntu
출처
- Ubuntu Manpage
- systemd 공식 문서