--- title: tail — 로그 끝부분 보기 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 파일의 마지막 줄만 보고, -f로 실시간 추적하는 로그 확인 필수 명령어. tags: 프로그램, 서버 로그 기록 및 분석, tail --- **💬 "tail 명령어"** tail은 파일의 **끝부분**을 보여줍니다. 로그는 최신 내용이 아래에 쌓이므로 장애 대응의 출발점입니다. `-f`를 붙이면 파일에 추가되는 내용을 실시간으로 따라갑니다. - **개념**: 파일의 마지막 N줄을 출력합니다. 기본 10줄입니다. - **왼쪽 인자**: -n 숫자로 볼 줄 수를 지정합니다. - **오른쪽 인자**: 대상 파일 경로입니다. - **-f**: 실시간 추적(tail -f)으로 동작이 달라집니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -n | 마지막 N줄을 출력합니다(-n 100) | | -f | 파일 끝을 실시간으로 따라갑니다 | | -F | 회전(rotate)된 파일도 따라갑니다 — 운영 로그에 권장 | | -q | 여러 파일일 때 파일명 헤더를 생략합니다 | ## 필수 명령어 조합 3가지 - `tail -n 100 /var/log/nginx/access.log` — 최근 100줄 확인 - `tail -F /var/log/nginx/error.log` — 회전을 견디며 실시간 오류 추적 - `tail -n 50 /var/log/app.log | grep -i error` — 최근 로그에서 오류만 추리기 **💬 "운영 중에 사고 안 나게 쓰는 안전한 예시 하나 보여줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 최근 오류 확인 로그의 마지막 100줄을 봅니다. ``` tail -n 100 /var/log/nginx/error.log ``` ### 2단계 · 실시간 추적 재현 중일 때 -F로 따라갑니다. ``` tail -F /var/log/nginx/error.log ``` ### 3단계 · 패턴 추리기 특정 키워드만 걸러 원인을 좁힙니다. ``` tail -F /var/log/app.log | grep -i 'timeout\|exception' ``` ## 실무에서는 이렇게 씁니다 ### 1. 502 급증 대응 **상황** — 갑자기 502가 늘어 원인을 찾아야 합니다. ``` tail -F /var/log/nginx/error.log ``` **결과** — upstream 연결 실패 메시지가 실시간으로 보여 백엔드 문제임을 확인합니다. **포인트** — access.log의 상태코드와 error.log의 원인을 함께 보는 것이 기본입니다. ### 2. 배포 직후 오류 확인 **상황** — 배포 후 앱이 뜨는지 즉시 확인하고 싶습니다. ``` tail -n 200 /var/log/app/app.log | grep -i -E 'error|exception|fatal' ``` **결과** — 배포로 인한 예외가 있는지 몇 초 안에 확인됩니다. **포인트** — 배포 스크립트에 이 검사를 넣으면 자동 롤백 기준으로도 쓸 수 있습니다. ## 주의할 점 - -f는 종료되지 않습니다. 확인 후 Ctrl+C로 끝냅니다. - 로그 회전 중에는 -f가 끊깁니다. 운영 로그에는 -F를 씁니다. - tail -f 대신 파일을 다시 열지 않아 회전 후 이전 inode를 따라갈 수 있습니다(-F로 해결). ## 실제 실행 화면 최근 오류 로그를 확인한 결과입니다(백엔드 연결 실패). ![tail 명령어 실행 결과: 최근 오류 로그](https://games.cursorai.co.kr/assets/tail-demo.png) 실제 운영 중인 서버 이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다. --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/logs/tail.html