stat 명령어

리눅스 환경에서 작업하다 보면 "이 파일이 정확히 언제 생성되었지?" 혹은 "이 파일의 inode 번호가 뭐지?"라는 의문이 생길 때가 있습니다. 흔히 사용하는 ls -l 명령어는 편리하지만, 파일의 상세한 상태값(Status)을 모두 보여주지는 못합니다. 이때 필요한 것이 바로 stat 명령어입니다. 오늘은 리눅스 파일 시스템의 숨겨진 정보를 파헤치는 stat 명령어의 사용법과 실무 팁을 완벽히 정리해 드립니다.


1. 리눅스 stat 명령어란 무엇인가?

stat은 'Status'의 약자로, 파일이나 파일 시스템의 상세 정보를 출력하는 명령어입니다. 단순히 파일 이름과 크기만 보여주는 것이 아니라, 리눅스 아이노드(inode)에 저장된 메타데이터를 직접 참조하여 보여줍니다. 특히 보안 사고 분석(포렌식) 시 파일의 접근, 수정, 변경 시간을 추적할 때 핵심적으로 사용됩니다.

2. stat 출력 데이터의 핵심 의미

명령어를 입력했을 때 나타나는 주요 항목들은 다음과 같은 의미를 갖습니다.

  • File: 파일명 또는 경로
  • Size: 파일의 크기 (바이트 단위)
  • Device: 파일이 위치한 장치의 ID
  • Inode: 파일의 고유 식별 번호
  • Links: 하드 링크의 개수
  • Access/Modify/Change: 이른바 타임스탬프(Timestamps) 데이터

3. 리눅스 파일 타임스탬프 3요소 (atime, mtime, ctime)

많은 사용자가 ModifyChange를 혼동합니다. 이 차이를 아는 것이 리눅스 숙련도의 척도입니다.

  1. Access (atime): 파일을 열어서 내용을 읽었을 때 갱신됩니다.
  2. Modify (mtime): 파일의 내용(Content)을 수정했을 때 갱신됩니다.
  3. Change (ctime): 파일의 속성(권한, 소유주 등 메타데이터)이 변경되었을 때 갱신됩니다.
  4. Birth: 파일이 최초 생성된 시간 (지원되는 파일 시스템에 한함).

4. stat 명령어 주요 옵션 및 활용법

[표 1] stat 명령어 주요 옵션 가이드
옵션 설명 비고
-f (--file-system) 파일 자체가 아닌 파일이 속한 파일 시스템의 정보를 출력 여유 공간 확인 등
-t (--terse) 간결한 형식으로 출력하여 스크립트 처리에 용이 한 줄로 요약 출력
-c (--format) 원하는 정보만 골라 출력 (커스텀 포맷) %a(권한), %n(이름)
-L (--dereference) 심볼릭 링크가 아닌 원본 파일의 정보를 확인 링크 추적 시 필수

5. 실무에서 바로 쓰는 stat 활용 예시

Q: 파일의 8진수 권한(예: 755)만 딱 뽑아내고 싶다면?
stat -c "%a" filename.txt

이처럼 --format 옵션을 사용하면 쉘 스크립트 작성 시 특정 파일의 권한을 체크하여 조건문을 만드는 등 자동화 작업에 매우 효율적입니다.

결론: ls를 넘어 stat으로 파일 마스터하기

리눅스 stat 명령어는 단순히 정보를 확인하는 수준을 넘어, 시스템 트러블슈팅과 보안 감사에 필수적인 도구입니다. mtime과 ctime의 차이를 정확히 이해하고, -c 옵션을 통해 필요한 데이터만 추출하는 연습을 해보세요. 리눅스 시스템 관리의 깊이가 달라질 것입니다.

지금 바로 터미널에서 stat /etc/passwd를 입력해 보세요!
여러분의 시스템 파일은 어떤 이야기를 들려주나요?

댓글 쓰기

다음 이전