stat — 파일 메타데이터 확인
Linux / 파일 및 디스크 관리 / stat.html
💬 "stat 명령어"
ls -l은 요약이고, stat은 파일의 모든 메타데이터를 정확히 보여줍니다. 권한·시각·inode 문제를 볼 때 씁니다.
특히 접근/수정/변경 시각(Atime/Mtime/Ctime)을 구분해서 보는 것이 장애 분석에 중요합니다.
- 개념: 파일의 크기, inode 번호, 링크 수, 소유자, 권한, 시각 정보를 모두 출력합니다.
- Access: 마지막으로 읽은 시각입니다. relatime 옵션 때문에 항상 갱신되지는 않습니다.
- Modify: 내용이 마지막으로 바뀐 시각입니다. 로그/배포 시점 판단에 가장 유용합니다.
- Change: 메타데이터(권한·소유자)가 바뀐 시각입니다.
- Size / Blocks: 논리 크기와 실제 할당 블록입니다. 스파스 파일 확인에 씁니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-c <형식> | 지정한 형식으로 원하는 항목만 출력 |
-f | 파일이 아니라 파일시스템 정보를 출력 |
--printf | 개행을 직접 제어해 출력 |
필수 명령어 조합 3가지
stat -c '%n %s %U:%G %a' /var/www/html/index.php— 이름·크기·소유자·권한만 한 줄로 뽑기stat -c '%n %y' /var/log/nginx/*.log— 로그별 마지막 수정 시각 비교stat -f -c '%T %a %b' /— 파일시스템 타입과 블록 통계 확인
💬 "이슈 티켓에 남길 근거를 만드는 예시 알려줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 파일 기준 정보 확인
대상 파일의 권한과 소유자, 시각을 확인합니다.
stat /var/www/html/index.php
2단계 · 필요한 항목만 추출
여러 파일을 비교할 때 형식 출력을 씁니다.
stat -c '%n %U:%G %a %y' /var/www/html/*.php
3단계 · 배포 전후 비교
배포 시각과 파일 수정 시각이 맞는지 검증합니다.
stat -c '%n %y' /opt/app/current/public/index.php
실무에서는 이렇게 씁니다
1. 권한 원인 추적
상황 — 웹서버가 특정 파일을 읽지 못해 403이 발생합니다.
stat -c '%n %U:%G %a' /var/www/html/uploads
결과 — 소유자가 root:root이고 권한이 700이면 www-data가 접근할 수 없음을 바로 확인합니다.
포인트 — 403/500 문제의 절반은 권한입니다. stat으로 소유자와 권한을 먼저 봅니다.
2. 배포 시각 검증
상황 — 롤백 후 실제로 이전 파일이 반영됐는지 확인해야 합니다.
stat -c '%n %y' /opt/app/current/public/index.php
결과 — Modify 시각이 롤백한 릴리스 시각과 일치하는지 확인합니다.
포인트 — 캐시가 남아 있으면 시각만 봐서는 부족합니다. 링크 대상과 함께 확인합니다.
주의할 점
- Access 시각은 relatime 설정 때문에 항상 갱신되지 않아 신뢰도가 낮습니다.
- 심볼릭 링크는 기본적으로 대상 파일의 정보를 보여줍니다. 링크 자체를 보려면 -L 대신 기본 동작을 확인합니다.
- Ctime은 변경 시각이지 생성 시각이 아닙니다. 리눅스에는 생성 시각을 기본 제공하지 않는 파일시스템이 있습니다.
실제 실행 화면
파일의 소유자·권한·시각과 로그 파일의 크기·시각을 확인한 결과입니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.