본문 바로가기
인프라 (Infrastructure)/운영체제 (OS)

리눅스 head / tail 명령어 사용법 및 실제 예제 활용 (tail -f 옵션 사용법)

by IT 성능 전문 블로그 2025. 9. 10.
반응형

안녕하세요.

루디쿡 아이티입니다~!!

이번에 소개드릴 리눅스의 핵심 기술은

바로 파일의 처음과 끝을 자유자재로

훔쳐보는 head와 tail 명령어입니다!!


head / tail 이란?

head와 tail은 이름 그대로 파일의

머리(head)와 꼬리(tail), 시작 부분과 끝 부분의 내용을

빠르게 확인할 수 있게 해주는

가장 기본적인 파일 탐색 도구입니다.

 

수천, 수만 줄에 달하는 거대한 로그 파일 전체를 열어볼 필요 없이,

"앞부분 몇 줄만 확인해서 파일 종류를 파악"하거나,

"실시간으로 추가되는 마지막 로그를 확인"하고 싶을 때

사용하는 필수 명령어입니다.

 

이 명령어들은 초기 유닉스(Unix) 시절부터 존재해왔으며,

"하나의 도구는 하나의 작업만 잘해야 한다"는 유닉스 철학을 충실히 따르는,

작지만 강력한 기능의 대표주자입니다.

마치 두꺼운 책의 첫 몇 페이지나 마지막 에필로그만 빠르게 훑어보는 것과 같죠. 📖


head / tail 기본 문법

head와 tail은 사용법이 거의 동일하여 함께 배우기 매우 좋습니다.

요소 설명
head 파일의 시작 부분을 지정한 줄 수만큼 출력합니다.
tail 파일의 마지막 부분을 지정한 줄 수만큼 출력합니다.
옵션 출력할 줄의 수를 지정하거나(-n), 실시간으로 감시(-f)하는 등 동작 방식을 설정합니다.
파일 내용을 확인할 파일의 이름 또는 경로입니다.
 

head / tail 실제 예시

두 명령어의 강력한 활용법을 알아보기 위해,

아래와 같이 15줄로 구성된 RudiCook.log 파일을

예제로 사용하겠습니다.

 

RudiCook.log 파일의 원본 내용

[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT
[DEBUG] Initializing modules...
[DEBUG] Module A loaded.
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.
[ERROR] Payment failed for user 'guest'. Reason: Timeout.
[DEBUG] Retrying payment...
[ERROR] Payment failed again for user 'guest'.
[INFO] Shutting down service for user 'guest'.
[INFO] Server stopping...

예시 1: 파일의 첫 부분을 확인하는 head

기본적으로 head 명령어는 파일의 첫 10줄을 보여줍니다.

구분 내용
목표 RudiCook.log 파일의 시작 부분을 확인하기
전체 명령어 head RudiCook.log
명령어 분석 별다른 옵션이 없으므로, 기본값인 상위 10줄을 화면에 출력합니다.
실행 결과 ✨ 아래 확인!!
 
[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT
[DEBUG] Initializing modules...
[DEBUG] Module A loaded.
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.

결과 분석: 파일의 1번째 줄부터 10번째 줄까지 정확하게 출력된 것을 볼 수 있습니다.

파일의 종류나 초기 설정 값을 파악할 때 매우 유용합니다.


예시 2: 원하는 만큼만 보는 head -n

-n 옵션을 사용하면 보고 싶은 줄의 수를 직접 지정할 수 있습니다.

구분 내용
목표 RudiCook.log 파일의 첫 3줄만 확인하여 버전과 제작자 정보 파악하기
전체 명령어 head -n 3 RudiCook.log
명령어 분석 -n 3 옵션을 통해 출력할 줄의 수를 10줄(기본값)이 아닌 3줄로 지정했습니다.
실행 결과 ✨ 아래 확인!!
 
[INFO] Server starting...
[INFO] Version: 1.0.0
[INFO] Author: Rudi Cook IT

결과 분석: 정확하게 파일의 맨 위 3줄만 깔끔하게 출력되었습니다. 간단하죠?


예시 3: 파일의 마지막 부분을 확인하는 tail

tail은 head와 정반대로, 파일의 마지막 10줄을 보여줍니다.

최신 로그를 확인할 때 가장 많이 사용됩니다.

구분 내용
목표 RudiCook.log 파일의 마지막 부분을 확인하여 서버의 최종 상태 파악하기
전체 명령어 tail RudiCook.log
명령어 분석 별다른 옵션이 없으므로, 기본값인 하위 10줄을 화면에 출력합니다.
실행 결과 ✨ 아래 확인!!
 
[DEBUG] Module B loaded.
[INFO] Database connection requested.
[WARN] Connection pool is running low.
[INFO] Database connection successful.
[DEBUG] User 'admin' logged in.
[ERROR] Payment failed for user 'guest'. Reason: Timeout.
[DEBUG] Retrying payment...
[ERROR] Payment failed again for user 'guest'.
[INFO] Shutting down service for user 'guest'.
[INFO] Server stopping...

결과 분석: 전체 15줄 중 마지막 10개 라인인 6번째 줄부터 15번째 줄까지의 내용이 출력되었습니다.

파일의 최종 결과나 최근 에러를 확인할 때 유용합니다.


예시 4: 실시간 로그를 감시하는 tail -f (★핵심★)

tail의 가장 강력한 기능은 바로 -f (follow) 옵션입니다. 이 옵션을 사용하면 파일이 종료되지 않고,

새롭게 추가되는 내용을 실시간으로 계속 화면에 출력해 줍니다.

구분 내용
목표 RudiCook.log 파일에 새로운 로그가 추가되는 것을 실시간으로 감시하기
전체 명령어 tail -f RudiCook.log
명령어 분석 -f 옵션이 파일의 변경을 계속 추적하며, 새로운 내용이 추가될 때마다 즉시 화면에 보여줍니다. (종료하려면 Ctrl + C)
실행 결과 ✨ 아래 확인!!
 
# 먼저 마지막 10줄이 출력됩니다.
[DEBUG] Module B loaded.
...
[INFO] Server stopping...

# 그리고 커서가 여기서 깜빡이며 새로운 입력을 기다립니다.
# 이 상태에서 다른 터미널을 통해 RudiCook.log에 내용이 추가되면...
# [FATAL] Critical system error! 이라는 내용이 추가되는 즉시 화면에 나타납니다!
[FATAL] Critical system error!

결과 분석: 시스템 관리자와 개발자가 서버의 상태를 실시간으로 모니터링할 때 없어서는 안 될 필수 옵션입니다.

에러가 발생하는 순간을 즉시 포착할 수 있습니다.

 


 

이것으로 파일의 앞과 뒤를 자유롭게 넘나드는 head와 tail에 대해 알아보았습니다.

간단하지만 서버 관리의 효율을 극대화하는 최고의 무기입니다!

 

앞으로도 좋은 글로 찾아뵙도록 하겠습니다.

 

IT 성능 전문가, IT를 전하는 루디쿡아이티였습니다!!

감사합니다~!!

반응형