stat 개요
`stat` 명령어는 파일이나 디렉토리 자체의 내용이 아닌, 파일 시스템이 해당 객체를 관리하기 위해 저장하는 메타데이터를 보여줍니다. 이는 파일의 생성 시점, 최종 변경 시점, 접근 횟수 등 `ls -l`보다 훨씬 더 자세한 정보를 제공하여, 파일의 변경 이력이나 접근 패턴을 분석할 때 유용합니다.
stat의 주요 역할
`stat` 명령어는 주로 다음과 같은 목적으로 사용됩니다:
주요 활용 분야
- **파일 속성 확인**: 파일의 소유권, 권한, 크기 등을 정확하게 확인합니다.
- **타임스탬프 분석**: 파일의 생성, 최종 수정, 최종 접근 시간 등 다양한 시간 정보를 확인하여 파일 변경 이력을 추적합니다.
- **심볼릭 링크 정보**: 심볼릭 링크의 대상 경로와 링크 자체의 정보를 모두 확인합니다.
- **파일 시스템 디버깅**: 디스크 공간 사용량, 블록 할당, inode 정보 등을 통해 파일 시스템의 문제를 진단합니다.
stat 출력 정보 이해
`stat` 명령어의 출력은 다양한 항목으로 구성됩니다. 각 항목의 의미를 이해하는 것이 중요합니다.
주요 출력 항목
- File: 대상 파일 또는 디렉토리의 이름입니다.
- Size: 파일의 크기(바이트)입니다. 디렉토리의 경우 일반적으로 4096바이트로 표시됩니다.
- Blocks: 파일이 디스크에서 차지하는 512바이트 블록의 수입니다.
- IO Block: 파일을 위한 I/O 작업을 수행할 때 효율적인 블록 크기입니다.
- Type: 파일의 유형을 나타냅니다. 예: regular file, directory, symbolic link 등
- Device: 파일이 위치한 장치의 ID(major:minor)입니다.
- Inode: 파일 시스템 내에서 파일의 고유 식별자인 inode 번호입니다. 하드 링크는 동일한 inode를 공유합니다.
- Links: 해당 파일에 대한 하드 링크의 수입니다.
- Access: 파일의 권한(8진수 및 rwx 형식)입니다.
- Uid / Gid: 파일의 소유자(User ID) 및 그룹(Group ID)과 해당 이름입니다.
- Access / Modify / Change: `Access`: 최종 접근 시간 (atime), `Modify`: 최종 수정 시간 (mtime), `Change`: 최종 변경 시간 (ctime). 'Birth'는 생성 시간(crtime)이며, 모든 파일 시스템에서 지원되지 않을 수 있습니다.
주요 stat 명령어 옵션
`stat` 명령어는 출력 형식을 지정하거나, 심볼릭 링크를 처리하는 방식을 변경하는 등 몇 가지 유용한 옵션을 제공합니다.
1. 기본 출력 옵션
2. 심볼릭 링크 처리 옵션
3. 출력 형식 지정 옵션
생성된 명령어:
명령어를 조합해 보세요.
설명:
`stat` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`stat` 명령어의 다양한 활용 예시들을 통해 파일/디렉토리의 상세 속성을 확인하고 분석하는 방법을 익혀보세요.
단일 파일의 모든 정보 확인
stat config.ini
`config.ini` 파일의 크기, 권한, 소유자, 타임스탬프 등 모든 상세 정보를 출력합니다.
심볼릭 링크 자체의 정보 확인
stat -P mylink.sh
`mylink.sh`가 `actual_script.sh`를 가리키는 심볼릭 링크일 때, `mylink.sh` 자체의 정보를 출력합니다. (링크 파일의 크기, 소유자 등)
심볼릭 링크가 가리키는 원본 파일의 정보 확인
stat -L mylink.sh
`mylink.sh`가 `actual_script.sh`를 가리키는 심볼릭 링크일 때, `actual_script.sh` 파일의 정보를 출력합니다.
특정 정보만 사용자 정의 형식으로 출력
stat -c '%n %s %y' my_document.txt
`my_document.txt` 파일의 이름, 크기(바이트), 그리고 최종 수정 시간(YYYY-MM-DD HH:MM:SS)만 출력합니다.
파일이 속한 파일 시스템의 정보 확인
stat --file-system /var/log
`/var/log` 디렉토리가 위치한 파일 시스템의 타입, 블록 크기, 마운트 지점 등의 정보를 확인합니다.
파일의 유닉스 타임스탬프 (mtime) 확인
stat -c '%Y' important_data.csv
스크립트에서 파일의 수정 시간을 유닉스 타임스탬프(초)로 가져와 계산 등에 활용할 때 유용합니다.