파일 내용 보기 (cat, head, tail, less)
서버에서 로그 파일을 분석하거나, 설정 파일을 확인할 때 가장 먼저 하는 일은 파일 내용을 보는 것입니다. 파일 크기와 목적에 따라 적합한 도구가 다릅니다.
cat — 파일 전체 출력
cat(concatenate)은 파일 내용을 화면에 그대로 출력합니다.
cat /etc/hostname
ubuntu-server
# 줄 번호 표시 (-n)cat -n backup.sh
1 #!/bin/bash
2
3 BACKUP_DIR="/var/backups"
4 DATE=$(date +%Y%m%d)
5
6 tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" /home/ubuntu/
# 여러 파일을 이어서 출력cat header.txt content.txt footer.txt
# 파일 합치기cat part1.txt part2.txt > combined.txt
파일이 수백 줄을 넘어가면 cat으로 보기가 불편합니다. 그럴 때는 head나 tail, less를 사용합니다.
head와 tail — 앞뒤만 보기
# 앞에서 10줄 (기본값)head /var/log/syslog
Apr 24 08:00:01 ubuntu-server systemd[1]: Started Daily apt download activities.
Apr 24 08:00:01 ubuntu-server CRON[1234]: pam_unix(cron:session): session opened
Apr 24 08:10:00 ubuntu-server kernel: [12345.678] eth0: renamed from veth...
# 앞에서 20줄head -n 20 /var/log/syslog# 뒤에서 10줄tail /var/log/syslog# 뒤에서 50줄tail -n 50 /var/log/auth.log
tail -f는 파일을 실시간으로 모니터링할 때 사용합니다. 로그 파일이 추가될 때마다 화면에 자동으로 출력합니다.
# 실시간 로그 모니터링 (Ctrl+C로 종료)tail -f /var/log/syslog
Apr 24 09:30:01 ubuntu-server CRON[5678]: pam_unix(cron:session): session opened
Apr 24 09:30:02 ubuntu-server CRON[5678]: (root) CMD (/usr/sbin/logrotate...)
Apr 24 09:31:00 ubuntu-server sshd[5900]: Accepted publickey for ubuntu...
tail -f는 서버 운영 중에 실시간으로 에러가 발생하는지 확인할 때 빠질 수 없는 도구입니다.
less — 대용량 파일 탐색
수만 줄짜리 로그 파일을 볼 때는 less를 씁니다. 파일 전체를 메모리에 올리지 않고 필요한 부분만 읽어서 보여주기 때문에 빠릅니다.
less /var/log/syslog
less 안에서 사용하는 키 조작입니다.
| 키 | 동작 |
|---|---|
Space 또는 f |
다음 페이지 |
b |
이전 페이지 |
j |
한 줄 아래 |
k |
한 줄 위 |
g |
파일 처음으로 |
G |
파일 끝으로 |
/패턴 |
아래 방향으로 검색 |
?패턴 |
위 방향으로 검색 |
n |
다음 검색 결과 |
N |
이전 검색 결과 |
q |
종료 |
# 특정 패턴 강조하며 보기less +/error /var/log/syslog
파이프라인과 함께 쓸 수도 있습니다.
# 긴 출력을 페이지 단위로 보기find / -name "*.conf" 2>/dev/null | less
diff — 파일 비교
두 파일의 차이점을 찾을 때 diff를 사용합니다.
diff original.sh modified.sh
3c3
< BACKUP_DIR="/var/backups"
---
> BACKUP_DIR="/mnt/nas/backups"
7a8,9
>
> echo "백업 완료: $(date)"
<는 첫 번째 파일의 내용, >는 두 번째 파일의 내용입니다. 3c3은 3번째 줄이 변경됐다는 뜻이고, 7a8,9는 7번 줄 뒤에 8~9번 줄이 추가됐다는 뜻입니다.
# 읽기 쉬운 통합 형식 (-u)diff -u original.sh modified.sh
--- original.sh 2026-04-24 09:00:00
+++ modified.sh 2026-04-24 09:30:00
@@ -1,7 +1,9 @@
#!/bin/bash
-BACKUP_DIR="/var/backups"
+BACKUP_DIR="/mnt/nas/backups"
DATE=$(date +%Y%m%d)
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" /home/ubuntu/
+
+echo "백업 완료: $(date)"
-는 삭제된 줄, +는 추가된 줄로 색으로 구분되어 보여서 훨씬 읽기 쉽습니다.
file — 파일 종류 확인
확장자만으로 파일 종류를 판단하기 어려울 때 file 명령어를 사용합니다.
file backup.sh
backup.sh: Bourne-Again shell script, ASCII text executable
file /bin/ls
/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked
file photo.jpg
photo.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16
file은 파일의 매직 바이트(파일 앞부분의 특정 패턴)를 분석해 실제 형식을 알려줍니다. 확장자가 없거나 잘못된 파일도 정확하게 판별합니다.
이제 개별 명령어들을 살펴봤으니, 다음 절에서는 이것들을 실전 시나리오에서 어떻게 조합하는지 직접 실습해봅시다.